通过标签获取最后一个片段

时间:2019-12-24 11:55:25

标签: android android-fragments

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

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

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

1 个答案:

答案 0 :(得分:0)

很抱歉,看着get the latest fragment in backstack,我了解到findFragmentByTag(tag)找到了包含必需tag的最后一个片段。以我为例,在添加许多片段之后,有时发现不是最后一个带有tag 的片段,而是一个上一个要持续的(具有相同的tag)。也许我的代码中有一个错误,我不知道,那是为什么。

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

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

2)如果我们不想更新以前的片段(因此A和D之间也有3个片段),这似乎是不可能的。

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