我有3个片段,如片段A,片段B,片段C。最初片段A被加载,片段A添加片段B,类似地片段B再次添加片段C。现在,当我点击backpress或片段C中的任何按钮时,它直接显示片段A。为什么它不显示片段B?我只想删除当前片段C并显示片段B,但请帮助我。这是我的代码。
//This is FragmentA and it adds FragmentB
fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.activity_main,new FragmentB());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
//This is FragmentB and it adds FragmentC
FragmentManager fragmentManager = getChildFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.publicCommunication,new FragmentC());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
//This is FragmentC and button is available remove cuurent fragment. now here is my problem , it removes both fragmentC and FragmentB and Shows FragmentA. I want it to show FragmentC but it is not showing it shows fragmentA.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager manager = getActivity().getSupportFragmentManager();
manager.popBackStackImmediate();
}
});
4条答案
按热度按时间qlfbtfca1#
您正在调用活动片段管理器来弹出backstack,但此管理器似乎没有将弹出“传播”到子管理器
如下所示更改您的
onClick
代码f4t66c6m2#
在您代码中,您没有向backstack添加任何片段,您只是向Activity添加片段,因此您需要更改此行:-**fragmentTransaction.addToBackStack(null);-fragmentTransaction.addToBackStack(“使用您的唯一字符串”);
将其添加到两个片段事务中,然后提交。
y0u0uwnf3#
用这个,
代替
因为,它只能从活动中使用,而不能从片段中使用。
cxfofazt4#
由于要将FragmentC添加到FragmentB的子FragmentManager中,因此必须从FragmentB的子FragmentManager(而不是从“活动”的supportFragmentManager)中移除/弹出FragmentC。
在Button click侦听器中,只需执行以下操作-
Kotlin:
java 语: