我有两项活动:
从MainActivity的一个片段导航到ViewActivity。 问题是,当我从ViewActivity(按Back按钮)导航到MainActivity时,我得到了活动的第一个片段,丢失了所有碎片的堆叠,我有。
有没有办法在不丢失Fragments backstack的情况下回到FragmentActivity?我怎样才能回到启动ViewActivity的片段?
更新
以下是我目前来自MainActivity的onCreate的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Listen for changes in the back stack
getSupportFragmentManager().addOnBackStackChangedListener(this);
//Handle when activity is recreated like on orientation Change
shouldDisplayHomeUp();
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
MainFragment mainFragment = new MainFragment();
getSupportFragmentManager().beginTransaction()
.add(R.id.a_main_container, mainFragment)
.commit();
}
}
更新2 最后,发现问题是,当我在ActionBar中单击“向上”按钮时。现在我从ViewActivity中移除了操作栏(只是不需要它),一切正常。通常的后退按钮将我移动到片段3,然后移动到片段2等
但是可以在ActionBar中使用UpButton做同样的事情吗? (仅供将来使用)
答案 0 :(得分:1)
似乎您在MainActivity的 onCreate 中实例化 Fragment 1 ,而不检查 savedInstanceState == null 。因此,每次导航回MainActivity时,它都会从头开始修改 Fragment 1 。发布更多代码,以便我指出正确的方向。
回答更新2:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 1 :(得分:0)
我认为你不知道要回到哪个片段。再按一次按钮会发生什么?
查看onCreate()活动的代码
也会有所帮助我认为你需要做的就是使用saveInstancestate来记住你所在的片段。
我认为这个问题会有所帮助 Once for all, how to correctly save instance state of Fragments in back stack?