从活动中返回一个片段

Xar*_*mer 9 android fragment android-intent android-activity

我在Activity C中有三个片段,它们表现为制表符.我必须从一个片段转到一个新的Activity X.现在我想回到Activity X的片段.

我有覆盖onBackPressed但不知道如何从Activity返回fragment/not fragmentActivity.

如果我想回到一个活动到另一个活动我覆盖后退按下并使用意图调用该活动..

我想做这样的事情..这段代码是为了回到以前的活动

@Override
public void onBackPressed()
{

    Intent intent = new Intent(CurrentActivity.this,ActivityYouLikeToGo.class);

    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

    startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

提前致谢..

Arn*_*ati 5

您可以添加一个 TAG(基本上是片段的字符串名称),然后使用 findFragmentByTag().

谷歌文档findFragmentByTag()在这里

或者您也可以addToBackStack()在从FragmentTransactiondoc 链接这里调用片段时。来自谷歌文档:

“通过调用 addToBackStack(),替换事务被保存到后退堆栈,因此用户可以通过按下后退按钮来反转事务并带回前一个片段。”


小智 5

首先,覆盖背压以转移片段所在的活动: -

@Override
public void onBackPressed()
{

    Intent intent = new Intent(CurrentActivity.this,ActivityYouLikeToGo.class);

    intent.putExtra("Check",1);
    startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

然后转到ActivityYouLikeToGo.java文件并在onCreate中执行以下操作: -

Intent intent = getIntent();
String s1 = intent.getStringExtra("Check");

if(s1.equals("1"))
  {
s1 = "";
Fragment fragment = new YOURFRAMENTNAME();
if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

最简单的方法:

@Override
onBackPressed(){
finish();
}
Run Code Online (Sandbox Code Playgroud)