2015-09-07 94 views
0

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

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

按钮P用明确的意图打开一个独立的活动(IndependentActivity),在这个活动中,我执行数据库操作,并在完成此活动后返回MainActivity。

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

我该如何解决这个问题,通过显示发起行动的片段来转到另一个活动?有什么方法可以保存出现的片段吗?

回答

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

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

+0

感谢您的快速反应!我试图保存片段的数量,以便在switch语句中再次调用它,但调试时我发现onSaveInstanceState方法中的bundle已正确保存,但是在调用onCreate方法时,bundle为null。你有什么想法,为什么发生这种情况? – biamacedo

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); 
}