我有一个Activity,它创建一个Fragment,然后这个Fragment创建另一个Fragment
Activity -> Fragment1 -> Fragment2
我现在在Fragment2,我想通过点击一个按钮回到Fragment1。
在我的OnClickListener of my button中,我有:
getActivity().getSupportFragmentManager().beginTransaction().remove(fragment2.this).commit();这让我想到了Activity。是否有一种方法只需移除Fragment2并转到Fragment1
谢谢您的时间,我在网上找不到任何合适的信息!
发布于 2016-12-13 19:28:56
@AhmedAbidi对你的问题有一个很好的洞察力,是的,正确地实施popBackStack可以解决你的问题。不过,无论如何,我想提出一个不同的方法来处理这种情况。
在Activity中编写两个公共函数以在片段之间切换。
public void switchToFragment1() {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, new Fragment1()).commit();
}
public void switchToFragment2() {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, new Fragment2()).commit();
}现在,通过单击Fragment1中的按钮,您可以通过
((YourActivity) getActivity()).switchToFragment2();在切换到Fragment1时也是一样的
((YourActivity) getActivity()).switchToFragment1();发布于 2016-12-13 19:43:46
你的问题需要更多的代码来澄清。
Fragment1是通过getSupportFragmentManager()或getChildFragmentManager()添加Fragment2吗?假设您正在执行前者,如果是这样,则使用片段API是错误的。按照Android的片段文档的说法,片段之间不应该相互了解:
通常,您希望一个片段与另一个片段进行通信,例如根据用户事件更改内容。所有片段到片段的通信都是通过相关的活动完成的。两个片段不应该直接交流。
因此,您应该实现适当的侦听器,以便从Fragment1到Activity通信,然后活动可以决定在哪里/何时添加Fragment2 -然后正确地利用getSupportFragmentManager().addToBackStack()的后台堆栈功能.用getSupportFragmentManager().popBackStack()。有关进一步解释,请参见片段反向导航的Android文档。
https://stackoverflow.com/questions/41127315
复制相似问题