【发布时间】:2019-12-23 03:37:15
【问题描述】:
我的活动由 3 个嵌套片段组成。有我的MainFragment默认显示,ProductFragment可以从它调用,然后DetailFragment可以从ProductFragment调用。
我可以在ProductFragment 和DetailFragment 之间来回切换。通过这样做,popStackBack 方法正在累积相似的片段。然后,如果我点击后退按钮,它会按照我调用它们的次数返回所有片段。
避免将相同的片段保留在后堆栈中的正确方法是什么?
编辑:
我首先调用我的主要片段:
if (savedInstanceState == null) {
getFragmentManager()
.beginTransaction()
.add(R.id.container, new SearchFragment(), "SEARCH_TAG")
.commit();
}
这里是调用活动片段的代码:
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.animator.enter_from_bottom, R.animator.exit_to_top, R.animator.enter_from_bottom, R.animator.exit_to_top);
ft.replace(R.id.container, new FactFragment(), "FACT_TAG");
ft.addToBackStack("FACT_TAG");
ft.commit();
然后,点击后退:
@Override
public void onBackPressed() {
getFragmentManager().popBackStack();
}
我试图获取当前片段的标签并执行一些与之相关的特定代码,但效果不佳。我还尝试 addToBackStack() 仅当当前 Fragment 尚未添加到 backStack 时,但它弄乱了我的 Fragment 视图。
【问题讨论】:
-
你能发布更多关于如何添加和删除内部片段的代码吗?
-
在我原来的帖子中添加了一些细节
标签: android android-fragments nested