首页 > 解决方案 > 如何重用一个片段

问题描述

当我替换一个片段时,它会被破坏。我试图在活动的 onCreate 中创建片段并在活动中保存它的引用,并在我“重新显示”或“重新打开”它时通过调用替换引用来使用它,但这没有帮助并且片段被破坏(替换时由另一个片段)并重新创建。解决方案应该是什么?

我想要实现的目标是在 WhatsApp 中说片段在不可见时不应被破坏,除非我没有使用滑动手势,而是使用常规按钮。

谢谢。

标签: androidandroid-fragmentsfragmenttransactionfragmentmanager

解决方案


您需要使用addToBackStack()来记住片段事务,如下所示:-

FragmentA fragmentA = new FragmentA();
getFragmentManager().beginTransaction()
    .replace(R.id.YOUR_CONTENT,fragmentA,"YOUR_TARGET_FRAGMENT_TAG")
    .addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit();

你可以检查片段是否已经存在于堆栈中或不像下面那样

Fragment fragment = getFragmentManager().findFragmentByTag("YOUR_TARGET_FRAGMENT_TAG");

 if (fragment!=null && fragment instanceof FragmentA) {
   //you are good to go, do your logic   
    }

推荐阅读