gpt4 book ai didi

java - FragmentActivities 之间正确的后退导航

转载 作者:行者123 更新时间:2023-12-01 12:00:36 27 4
gpt4 key购买 nike

我有两项 Activity :

  1. MainActivity,它扩展了 FragmentActivity 并具有
  2. ViewActivity,它只是一个 Activity,以 MainActivity 作为父级。

有一个从 MainActivity 的 Fragments 之一到 ViewActivity 的导航。问题是,当我从 ViewActivity(按“后退”按钮)导航回 MainActivity 时,我得到了 Activity 的第一个 fragment ,丢失了我拥有的所有 fragment 的后堆栈。

有没有办法在不丢失 Fragments 堆栈的情况下返回 FragmentActivity?如何回到启动ViewActivity的Fragment?

Some kind of visualization

更新

这是我当前从 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 中删除了操作栏(只是那里不需要它),一切正常。通常的后退按钮将我移至 fragment 3,然后移至 fragment 2,依此类推。

但是可以用ActionBar中的UpButton做同样的事情吗? (仅询问将来使用)

最佳答案

似乎您在 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);
}
}

关于java - FragmentActivities 之间正确的后退导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28004094/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com