我正试图在我的活动中动态地用另一个片段替换片段。
看起来你不能用动态创建的片段替换布局文件中静态定义的片段: Android: can't replace one fragment with another
建议的解决方案是在onCreate方法中动态添加原始Fragment:
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();
}
这样可行,但是当用户按下后退按钮时,原始的Fragment被删除而不是关闭Activity,因为FragmentTransaction将它添加到FragmentManager堆栈。
有没有办法在没有事务/堆栈条目的情况下将初始片段添加到我的活动中?
答案 0 :(得分:3)
不要将它添加到Backstack中。删除ft.addToBackStack(null);
行,如果您希望能够使用后退按钮返回上一个状态,则只需要此行。