Android添加没有交易的片段
问题描述:
我想在我的活动中动态地用另一片段替换片段。Android添加没有交易的片段
它看起来就像你不能代替在布局文件静态定义一个片段,有一个动态创建的片段: Android: can't replace one fragment with another
建议的解决方案是动态地添加原始片段的onCreate方法:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ShelfFragment shelves = new ShelfFragment();
ft.add(R.id.left_fragment, shelves);
ft.addToBackStack(null);
ft.commit();
}
这会起作用,但是当用户按下后退按钮时,原始碎片被移除而不是关闭活动,因为FragmentTransaction将其添加到FragmentManager堆栈。
有没有方法可以在没有事务/堆栈条目的情况下将初始片段添加到我的活动中?
答
不要将它添加到后台。删除ft.addToBackStack(null);
行,如果您希望能够使用后退按钮返回到之前的状态,则只需要此行。
删除addToBackStack调用可以工作,但如果您稍后尝试使用FragmentTransaction.replace替换原始片段,则在点击后退按钮时原始片段不会返回。 –