我有一个带有Viewpager的Activity,还有一个frameLayout,用作应该在该viewpager上方绘制的片段的容器。
当我单击“活动”的按钮时,该框架布局容器中会显示一个片段。按下导航栏中的,我可以关闭该片段。从活动本身调用时,所有这些东西都可以正常工作。
我现在遇到的情况是,在viewpager中的某个片段中执行特定操作时,我会调用一个由主活动实现的回调,然后在帧布局中显示一个片段。
但是现在出现了问题。当我想向后导航或想像我之前描述的那样关闭片段时,什么也没发生。
因此,结论:
直接从Activity调用的“片段显示到容器”->我可以通过getActivity()。onBackpressed()
“片段显示到容器”从viewpager中的片段调用,然后委派给活动->向后导航或getActivity()。onBackpressed()无效。
所以我的问题是:即使从活动的viewpager中的片段中调用片段,也该如何关闭容器中的片段?
答案 0 :(得分:1)
可能您正在添加一个片段到后堆栈,所以onBackPressed
您应该 pop 来自后堆栈的最后一个片段。
类似的东西:
FragmentManager fm = activity.getFragmentManager();
fm.popBackStackImmediate();
答案 1 :(得分:0)
同时我发现了问题.. 由于我正在运行某种更新循环,因此我多次将片段添加到后台,但是由于片段本身没有变化,所以没有意识到,只是将新实例添加到了后台。因此,当我调用onBackpressed()方法时,实例已从后堆栈中删除,但由于其中有200个实例,因此没有任何反应。