【问题标题】:Why is my android backstack size still 0 after FragmentTransaction.add()为什么 FragmentTransaction.add() 之后我的 android backstack 大小仍然为 0
【发布时间】:2016-03-07 10:46:38
【问题描述】:

好吧,我现在很困惑。 我正在运行一个扩展 FragmentActivity 的 Activity,它实现了 Google maps v2。 所以地图片段在活动中并且一直在运行。

我现在想在顶部添加一个新片段,我尝试使用 getSupportFragmentManager() 和 getFragmentManager() 并且在这两种情况下,在 transaction.commit() 之后 fragmentManager.getBackStackEntryCount() 都是 0。

这导致当我在地图顶部打开新片段时,我无法返回地图,只能退出应用程序。

我知道这两个管理器都有不同的 backstack,但他们都没有实际显示任何 backstack ater 提交。

有人可以解释一下我应该如何解决这个问题。 Android 的复杂性很深 :)

【问题讨论】:

    标签: android google-maps android-fragments fragmentmanager


    【解决方案1】:

    我遇到了同样的问题。最后必须将扩展 FragmentActivity 更改为 Activity。

    现在它工作正常。

    【讨论】:

      【解决方案2】:

      而不是getSupportFragmentManager,它返回正确的数字:

      @Override public void onBackPressed() {
          if (getSupportFragmentManager().getBackStackEntryCount() > 0 ) {
              getSupportFragmentManager().popBackStack();
          }
      }
      

      您必须在 ft.commit() 之后或 fm.getBackStackEntryCount() 之前调用 fm.executePendingTransactions()。因为 commit() 只为稍后的传递安排事务。

      【讨论】:

        猜你喜欢
        • 2022-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-30
        • 1970-01-01
        • 1970-01-01
        • 2014-08-03
        • 2018-09-26
        相关资源
        最近更新 更多