繁体   English   中英

Android-onBackPressed不受片段影响

[英]Android - onBackPressed has no effect from fragment

我有一个带有viewpager的Activity,还有一个frameLayout,用作要在该viewpager上方绘制的片段的容器。

当我单击“活动”的按钮时,该框架布局容器中会显示一个片段。 按下导航栏中的,我可以关闭该片段。 从活动本身调用时,所有这些东西都可以正常工作。

我现在遇到的情况是,在viewpager中片段之一的特定动作下,我调用了主活动实现的回调,然后在帧布局中显示了一个片段。

但是现在出现了问题。 当我想向后导航或想像我之前描述的那样关闭片段时,什么也没发生。

因此,结论是:

  1. 直接从Activity中调用“片段显示到容器”->我可以通过getActivity()。onBackpressed()从片段中导航回来

  2. 从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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM