Java 如何使用活动显示的片段转到上一个活动
我有两个活动,活动A和活动B。现在活动A有3个Java 如何使用活动显示的片段转到上一个活动,java,android,Java,Android,我有两个活动,活动A和活动B。现在活动A有3个片段,其中一个启动活动B。当我按下操作栏按钮时,它返回到活动A,但显示默认的片段。我使用navUtils.navigateupFromSameTask返回上一个活动 如何让用户使用的最新片段显示,而不是用户首次启动应用程序时显示的默认片段?例如,当应用程序启动时,它会显示Fragmentone。当用户转到Fragment2并从中启动活动B时,我想返回到显示Fragment 2的上一个活动 @Override public boolean onOpti
片段
,其中一个启动活动B。当我按下操作栏按钮时,它返回到活动A,但显示默认的片段
。我使用navUtils.navigateupFromSameTask
返回上一个活动
如何让用户使用的最新片段显示,而不是用户首次启动应用程序时显示的默认片段?例如,当应用程序启动时,它会显示Fragment
one。当用户转到Fragment
2并从中启动活动B时,我想返回到显示Fragment 2的上一个活动
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
在onCreate方法中,我有
if (savedInstanceState == null) {
fragmentManager = getFragmentManager();
fragment = new RadioSound();
selectItem(0);
}
然后选择项目
:
private void selectItem(int position) {
// update the main content by replacing fragments
activeFrag = position;
if(position == 0){
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
}
else if(position == 1){
if(conv == null)
conv = new Conversations();
fragmentManager.beginTransaction().replace(R.id.content_frame, conv).commit();
} else{
fragmentManager.beginTransaction().replace(R.id.content_frame, (new Preferences())).commit();
}
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
setTitle(fragments[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
当您从活动B返回到活动A时,您将重新创建片段,因此它将始终显示您的片段1,而不是所需的片段2
您的问题是,您信任savedInstanceState来决定是否应该重新创建片段。但是,只有在活动被销毁时才会调用onSaveInstanceState()
,而当您导航到下一个活动时,不会立即调用
如果已经添加了片段,则应在活动A的onCreate()
方法中查询FragmentManager
,否则执行初始片段创建。为了做到这一点,我会添加一个标签,以更好地找到您的片段
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
如何在活动A中添加片段?正常情况下,androids片段管理器将处理恢复最后显示的片段的工作。@AndroidGuy很抱歉回复太晚,但我的internet连接已断开一段时间。添加了用于添加片段的代码fragment@NehaShukla:您好,我注意到您在编辑帖子时向帖子中添加了内联代码跨距(,如下图所示);这些仅适用于句子中的实际代码。另外,请确保在你能找到的帖子中修复尽可能多的问题——像“提前感谢”和“请帮助”这样的东西是不必要的。谢谢