【问题标题】:Get last fragment by tag通过标签获取最后一个片段
【发布时间】:2019-12-24 11:55:25
【问题描述】:

我将片段添加到后堆栈。例如:A, B, C, A, D。然后从D我要更新第二个A

如果我使用supportFragmentManager.findFragmentByTag("A"),我会引用第一个A,它位于后堆栈的底部。

我尝试搜索fragments 集合、getBackStackEntryAt(i),但没有成功。

【问题讨论】:

  • 目前我使用parentFragmentchildFragmentManager访问之前的片段,见stackoverflow.com/questions/14804526/…
  • 抱歉,findFragmentByTag("A") 经常引用最后一个“A”,但并非总是如此。如果我添加许多片段,它可以链接到最后一个“A”。这种行为很奇怪。

标签: android android-fragments


【解决方案1】:

抱歉,查看get the latest fragment in backstack 我了解到findFragmentByTag(tag) 找到了需要tag 的最后一个片段。就我而言,在添加了许多片段后,它有时会发现不是带有tag 的最后一个片段,而是一个上一个 到最后的片段(带有相同的tag)。可能我的代码有bug,不知道是什么原因。

首先我尝试使用回调,然后尝试使用parentFragmentchildFragmentManager,参见getParentFragment returning null。在片段D 中,我调用了parentFragment 并访问了A 的方法,并且可以更新最后一个A 片段。这个解决方案有两个问题。

1) 子片段 (D) 从父片段 (A) 继承工具栏并添加自己的按钮。点击Back 按钮后,我们不会返回父级,甚至退出父级(A)。

2)如果我们要更新的不是之前的fragment(这样A和D之间也是3个fragment),似乎是不可能的。

因此,我取消了该解决方案并更改了应用程序行为。我在可能的地方清除了一个后台堆栈。这样我们就不能在 backstack 中有两个 A 片段。我使用supportFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)。是的,这是一种解决方法,但我不知道如何处理该错误。

【讨论】:

    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    相关资源
    最近更新 更多