如何使用活动显示的片段转到上一个活动

时间:2014-08-27 11:36:03

标签: java android

我有两个活动,活动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

1 个答案:

答案 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