1

我想创建包含在线性布局中的多个片段的堆栈。要将一组片段放入活动中,我使用以下代码(R.id.content 是 LinearLayout):

private void pushToBackStack(final Fragment... fragments) {
    final FragmentManager fm = getSupportFragmentManager();

    final FragmentTransaction ft = fm.beginTransaction();

    for (int i = 0; i < fragments.length; i++) {

        if (i == 0) {
            ft.replace(R.id.content, fragments[i]);
        } else {
            ft.add(R.id.content, fragments[i]);
        }
    }
    ft.addToBackStack(null);
    ft.commit();
}

当我打电话时

pushToBackStack(f1, f2);
pushToBackStack(f3, f4);
pushToBackStack(f5, f6);

屏幕上有 f3,f5 和 f6 可见,按返回键后显示 f2,f3,f4。

预期的行为是 f5,f6 -> Back -> f3,f4 -> Back-> f1, f2

4

1 回答 1

1

您不能以这种方式链接调用,您需要调用commitperreplaceadd

于 2011-07-28T14:20:43.723 回答