gpt4 book ai didi

android - 为什么 Fragment.addToBackStack() 导致后退按钮什么都不做?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:09 24 4
gpt4 key购买 nike

  1. Activity 1 可见。按下按钮, Activity 2 打开。
  2. Activity 2 将 fragment A 添加到自身(和返回堆栈)并且显示良好
  3. 按下 fragment 中的一个按钮转换到另一个 fragment ,B
  4. 按返回。什么都没发生。嗯? Back press 似乎全神贯注,没有采取任何行动,显示保持不变。
  5. 再次按“返回”,它会按预期返回到 Activity 1。

为什么我的 fragment 没有在第 4 步中显示?我已将该 fragment 添加到后退堆栈,那么为什么(当“后退”按钮似乎意识到它的存在时)它不显示该 fragment ?

这是我在 Activity 2 中用来打开 fragment A 的代码。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_profile_edit);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
transaction.addToBackStack(null);
transaction.add(android.R.id.content, new MyFragment());
transaction.commit();
}

这是打开 fragment B 的代码

    FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
transaction.add(android.R.id.content, new MyOtherFragment());
transaction.commit();

最佳答案

您是否尝试过 transaction.replace(...) 而不是 transaction.add(...)?那应该有效。我猜是因为如果你只是在另一个 fragment 上添加一个 fragment ,它不会将事务视为想要从 fragment A 返回。

编辑该问题的实际答案在下面的评论中:addToBackStack() 应该用在正在替换 的 fragment 上,而不是被替换的 fragment 上。

关于android - 为什么 Fragment.addToBackStack() 导致后退按钮什么都不做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9021524/

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