有没有办法找出返回堆栈发生了什么?

Is there a way to find out what has happened to the back stack?

在我的 Android 活动中,我使用 FragmentManager.OnBackStackChangedListener() 来监听片段返回堆栈的变化。

OnBackStackChangedListener 只有一种方法 onBackStackChanged(),但不传递有关更改的信息。

有没有办法收集这些信息?

具体来说,我想知道我之前添加的片段是否被这个返回堆栈更改删除了。

一种选择是使用 popBackStack 手动从返回堆栈中检索信息;您可以从堆栈中弹出最新状态,也可以通过指定名称或 ID 搜索特定状态。

因此,为了回答您的问题,您可以创建后退堆栈的本地副本,然后当 onBackStackChanged() 被调用时,您可以将保存的后退堆栈副本与当前后退堆栈进行比较,看看有什么不同改变了。

实现此目的的一种方法是使用 FragmentManager.enableDebugLogging(true);(您可以将其放在 Application 的 onCreate 中)。通过此调试,您不仅可以查看片段的各种生命周期事件,还可以查看有关后台堆栈更新的信息。

@Override
public void onCreate() {
    super.onCreate();

        FragmentManager.enableDebugLogging(true);
}