2

我有一个管理片段列表的活动。每次我想在我调用的堆栈中添加一个片段

 FragmentTransaction ft = getFragmentManager().beginTransaction();
 ft.replace(R.id.layout, fragment, tag);
 ft.addToBackStack(null);

然后我不断地将不同的片段推入/弹出堆栈。当我把它们推开时,我打电话

  getFragmentManager().popBackStackImmediate();

有谁知道片段知道它现在是堆栈中的顶部片段的方法吗?即,我在堆栈上有一个按 ABC D 顺序排列的片段。如果我将 D 从堆栈中弹出,C 是否知道它当前位于堆栈顶部?

提前致谢!

4

1 回答 1

0

在您的 ft.addToBackStack(null); 中,设置一个名称而不是 null。然后,您可以使用它来识别 backstack 条目。

IE

BackStackEntry currentBackStack = getSupportFragmentManager().getBackStackEntryAt(getSupportFragmentManager().getBackStackEntryCount()-1);
currentBackStack.getName();//your identifier

这将获取 backstack 中的最后一项,并获取该 backstack 条目的名称。您可以在每个片段中执行此操作,并检查名称是否匹配。

于 2013-07-11T23:00:25.643 回答