android– 在backstack中不是最顶级的片段恢复

android– 在backstack中不是最顶级的片段恢复,第1张

概述鉴于应用程序流程在图形和文本中描述如下所示.>片段1是最低片段,但不是通过设置disallowAddToBackStack在backstack中.>使用fragmentTransaction.addToBackStack()将片段2推入堆栈.>片段1的新实例被压入堆栈.>从堆栈中d出最顶层的片段(片段1).>活动2成为前景.&g

鉴于应用程序流程在图形和文本中描述如下所示.

>片段1是最低片段,但不是通过设置disallowAddToBackStack在backstack中.
>使用fragmentTransaction.addToBackStack()将片段2推入堆栈.
>片段1的新实例被压入堆栈.
>从堆栈中d出最顶层的片段(片段1).
>活动2成为前景.
>活动1成为前景.

这是我用来处理片段的通用方法:

private voID changeContainerVIEwTo(int containerVIEwID,Fragment fragment,Activity activity,String backStackTag) {    if (fragmentIsAlreadyPresent(containerVIEwID,fragment,activity)) { return; }    final FragmentTransaction fragmentTransaction =                  activity.getFragmentManager().beginTransaction();    fragmentTransaction.replace(containerVIEwID,fragment);    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);    if (backStackTag == null) {        fragmentTransaction.disallowAddToBackStack();    } else {        fragmentTransaction.addToBackStack(backStackTag);    }    fragmentTransaction.commit();}

问题

当活动1在最后一步中恢复时,片段1的最低实例也将恢复.此时,片段1在getActivity()上返回null.

>为什么堆栈中不是最重要的片段会重新开始?
>如果恢复片段是正确的 – 我应该如何处理分离的片段?最佳答案当一个Activity没有显示UI然后显示UI时,FragmentManager关联的所有碎片都会死亡,你需要恢复它的状态.

正如documentation所说:

There are many situations where a fragment may be mostly torn down (such as when placed on the back stack with no UI showing),but its state will not be saved until its owning activity actually needs to save its state.

在Activity onSaveInstanceState和onRestoreInstanceState中,尝试保存片段引用,然后使用以下内容恢复它们:

public voID onSaveInstanceState(Bundle outState){    getFragmentManager().putFragment(outState,"myfragment",myfragment);}public voID onRetoreInstanceState(Bundle inState){    myFragment = getFragmentManager().getFragment(inState,"myfragment");}

试试这个,祝你好运! 总结

以上是内存溢出为你收集整理的android – 在backstack中不是最顶级的片段恢复全部内容,希望文章能够帮你解决android – 在backstack中不是最顶级的片段恢复所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1140226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存