我有两个活动,活动A和活动B.现在活动A有3个Fragments
其中一个启动活动B.当我按下操作栏按钮时,它返回到活动A但显示默认{{1 }}。我使用Fragment
返回上一个navUtils.navigateupFromSameTask
。
如何在用户首次启动应用时显示用户使用的最新Activity
show而不是默认值?例如,当应用启动时,它会显示Fragment
一个。当用户转到Fragment
2并从中启动活动B时,我想回到上一个显示片段2的活动
Fragment
在onCreate方法中我有
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
然后if (savedInstanceState == null) {
fragmentManager = getFragmentManager();
fragment = new RadioSound();
selectItem(0);
}
:
selectItem
答案 0 :(得分:0)
当您从活动B返回活动A时,您将重新创建碎片,因此它将始终显示您的fragment1而不是您想要的碎片2。
您的问题是,您信任savedInstanceState以决定是否应重新创建片段。但是,onSaveInstanceState()
仅在活动被销毁时被调用,当您导航到下一个活动时,该活动不会立即发生。
如果已添加片段,则应查询活动A的FragmentManager
方法中的onCreate()
,否则您将创建初始片段。为了做到这一点,我会添加一个TAG来更好地找到你的碎片。
private static final String FRAGMENT_TAG_CONVERSATION = "frag_conv";
...
fragmentManager.beginTransaction().replace(R.id.content_frame, conv, FRAGMENT_TAG_CONVERSATION).commit();
如果您已添加片段,则可以检查:
if(fragmentManager.findFragmentByTag(FRAGMENT_TAG_CONVERSATION) == null))
// only add it here