[英]Android - onBackPressed has no effect from fragment
我有一个带有viewpager的Activity,还有一个frameLayout,用作要在该viewpager上方绘制的片段的容器。
当我单击“活动”的按钮时,该框架布局容器中会显示一个片段。 按下导航栏中的,我可以关闭该片段。 从活动本身调用时,所有这些东西都可以正常工作。
我现在遇到的情况是,在viewpager中片段之一的特定动作下,我调用了主活动实现的回调,然后在帧布局中显示了一个片段。
但是现在出现了问题。 当我想向后导航或想像我之前描述的那样关闭片段时,什么也没发生。
因此,结论是:
直接从Activity中调用“片段显示到容器”->我可以通过getActivity()。onBackpressed()从片段中导航回来
从viewpager中的片段调用“片段显示到容器”,然后将其委派给活动->向后导航或getActivity()。onBackpressed()无效。
所以我的问题是:即使从活动的viewpager中的片段之一调用该片段,也该如何关闭容器中的片段?
也许你要添加到堆栈中一个片段,所以onBackPressed
你应该从堆栈中弹出最后一个片段。
像这样: FragmentManager fm = activity.getFragmentManager(); fm.popBackStackImmediate();
FragmentManager fm = activity.getFragmentManager(); fm.popBackStackImmediate();
同时,我发现了问题。由于我正在运行某种更新循环,因此我多次将片段添加到Backstack中,但是由于片段本身没有变化,所以没有意识到,新实例得到了已添加到后台。 因此,当我调用onBackpressed()方法时,实例已从后堆栈中删除,但由于其中有200个实例,因此没有任何反应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.