我有一个活动(MainActivity),它有一个导航抽屉,可以一次显示2个片段(片段A和B)。 (此活动是由android studio创建的导航抽屉的默认活动)
当我在抽屉上选择片段B时,操作栏菜单会更新以显示特定于片段B的按钮(按钮P)。
Button P打开一个具有明确意图的独立活动(IndependentActivity),在此活动中我执行数据库操作,之后我完成此活动以返回MainActivity。
问题是:当IndependentActivity完成后,MainActivity显示但它显示片段A而不是片段B,它是调用意图转到IndependentActivity的片段。
如何通过显示启动操作的片段转到另一个活动来解决此问题?有没有办法保存出现的片段?
答案 0 :(得分:0)
基本上你要做的是:
这个的简单实现可能是:
@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);
}