Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 深入研究片段替换事务和系统返回键。最后一个碎片没有被摧毁,仍然完全活着 FragmentTransaction.add()FragA onid.content FragmentTransaction.replace(),addToBackStackFragBid.content FragmentTransaction.replace()FragCid.content_Android_Android Fragments_Fragment - Fatal编程技术网

Android 深入研究片段替换事务和系统返回键。最后一个碎片没有被摧毁,仍然完全活着 FragmentTransaction.add()FragA onid.content FragmentTransaction.replace(),addToBackStackFragBid.content FragmentTransaction.replace()FragCid.content

Android 深入研究片段替换事务和系统返回键。最后一个碎片没有被摧毁,仍然完全活着 FragmentTransaction.add()FragA onid.content FragmentTransaction.replace(),addToBackStackFragBid.content FragmentTransaction.replace()FragCid.content,android,android-fragments,fragment,Android,Android Fragments,Fragment,出现的问题如下: 单击System back->我们将看到FragA正在重新创建,但FragC仍然处于活动状态 这是因为当我们单击系统返回按钮时,我们还原了上面第二个操作的事务。我们将destroyFragB,而不是destroyFragC。FragC还活着,这是我不想要的 解决方案之一是在活动中实现一个backStackListener,当backStack为0时,我就按代码删除FragC 另一个是在任何replace()事务之前,我们调用popBackStack()来删除以前的事务。我们在每

出现的问题如下:

  • 单击
    System back
    ->我们将看到FragA正在重新创建,但FragC仍然处于活动状态
  • 这是因为当我们单击
    系统返回
    按钮时,我们还原了上面第二个操作的事务。我们将
    destroy
    FragB,而不是
    destroy
    FragC。FragC还活着,这是我不想要的

    解决方案之一是在活动中实现一个
    backStackListener
    ,当
    backStack
    为0时,我就按代码删除FragC

    另一个是在任何
    replace()
    事务之前,我们调用
    popBackStack()
    来删除以前的事务。我们在每个后续事务中应用
    addBackStack()
    。然而,缺点是每次调用
    popBackStack()
    ,它都会调用上一个片段的
    onResume()
    ,这也是不愉快的


    有没有人能就如何更好地应对这一问题向我提供更好的解决方案?真的很感激

    最后,当
    onbackbackbacklistener
    检测到后堆栈计数更改为0时,我采取的方法是删除FragC

    为什么不将C和D添加到后堆栈中?因为我想带来的流只需一次“系统返回单击”,用户将被引导到活动中的第一个片段!