返回活动的片段

时间:2015-09-07 19:19:27

标签: java android android-fragments android-intent

我有一个活动(MainActivity),它有一个导航抽屉,可以一次显示2个片段(片段A和B)。 (此活动是由android studio创建的导航抽屉的默认活动)

当我在抽屉上选择片段B时,操作栏菜单会更新以显示特定于片段B的按钮(按钮P)。

Button P打开一个具有明确意图的独立活动(IndependentActivity),在此活动中我执行数据库操作,之后我完成此活动以返回MainActivity。

问题是:当IndependentActivity完成后,MainActivity显示它显示片段A而不是片段B,它是调用意图转到IndependentActivity的片段。

如何通过显示启动操作的片段转到另一个活动来解决此问题?有没有办法保存出现的片段?

2 个答案:

答案 0 :(得分:0)

基本上你要做的是:

  • 输入IndependentActivity时保存MainActivity的状态
  • 退出IndependentActivity
  • 时重新加载MainActivity的状态

这个的简单实现可能是:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save which fragment that is in the view when entering another activity
    savedInstanceState.putString("fragment", "fragmentB");
    super.onSaveInstanceState(savedInstanceState);
}

片段B可以替换为告诉应用程序当前片段的字符串。

一旦你回到你想要的活动:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if( savedInstanceState != null ) {
         // Get which fragment that was active when you left the activity
         savedInstanceState.getString("fragment");

         // Programatically select the fragment here
    }
}

您可以在此处阅读有关保存实例状态的更多信息:

http://developer.android.com/training/basics/activity-lifecycle/recreating.html

我将留给您以编程方式选择片段。我希望它有所帮助!

答案 1 :(得分:0)

我发现我遇到了同样的问题:https://stackoverflow.com/a/29464116/2325672

要返回的后退箭头不起作用并重置活动的碎片,模拟器后三角效果很好。

将此代码添加到IndependentActivity对我有用:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId()== android.R.id.home) {
        Intent intent = NavUtils.getParentActivityIntent(this);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        NavUtils.navigateUpTo(this, intent);
        return true;
    }
    return super.onOptionsItemSelected(item);
}