【问题标题】:Android - Why BackStackCount = 0 when it still navigates back and forth just fine?Android - 为什么 BackStackCount = 0 当它仍然可以来回导航时?
【发布时间】:2015-03-03 21:53:49
【问题描述】:

在 OnBackPRessed Overriden 方法中,我尝试查看后堆栈上有多少条目。从 Activity 1 导航到 Activity 2 然后再转发到 Activity 3 - 当我调用 FragmentManager.BackStackEntryCount 时,我返回 0。

我不应该在那里至少有 2 个条目吗? 完全让我感到困惑的是,我会回到 Activity 2,然后再回到 Activity 1,这意味着有一些条目。那为什么当我要求它时它会返回 0 个条目???

另一件事是假设我在 Activity 3 我添加到 Activity 3 内的返回堆栈,然后我会返回 EntryCountOfOne - 我添加另一个我回来了 2.

这是否意味着 Fragment Manager 是按活动排序的?

我认为 BackStack 是全局的,无论您在哪个 Activity 中,您都应该能够看到上面的内容,或者至少得到正确的计数。

请整理一下我的人 - 试图理解这个概念

int iBackStackEntryCounter;     
iBackStackEntryCounter = this.FragmentManager.BackStackEntryCount;

【问题讨论】:

    标签: android navigation xamarin back-stack fragmentmanager


    【解决方案1】:

    首先,FragmentManager's 回栈是另一件事,我现在不会进入,以免让您更加困惑。
    后台堆栈包含任务组中的所有活动,例如:
    堆栈是一个你应该在Tasks and Back Stack 中深入了解的概念 和Providing Proper Back Navigation

    从您的问题中不清楚您要达到什么目的,因此我假设您想“知道”您的应用程序何时由于按下后退键而将进入后台,直到您的最后一个活动是关于被关闭。在这种情况下,最好的模式是保存您创建的活动数量的计数器(通过在每个 onStart 中增加计数器并在每个 onStop 中减少)并覆盖 onBackPressed,您可以在其中执行以下操作:

    public override void OnBackPressed ()
    {
      if (counter = 1)
        //it means you are about to press back in your last activity so do what you must
      else
        base.OnBackPressed();//it's not your last activity so just act normal
    }
    

    【讨论】:

      猜你喜欢
      • 2014-10-28
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      相关资源
      最近更新 更多