Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android fragments 替换1活动中的片段_Android Fragments_Back Stack - Fatal编程技术网

Android fragments 替换1活动中的片段

Android fragments 替换1活动中的片段,android-fragments,back-stack,Android Fragments,Back Stack,我有两个片段,称为片段A和片段B Log.d(TAG, "replacing fragment"); FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.setCustomAnimations(enterAnim, exitAnim); ft.replace(resId, fragment);

我有两个片段,称为片段A和片段B

            Log.d(TAG, "replacing fragment");
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.setCustomAnimations(enterAnim, exitAnim);
    ft.replace(resId, fragment);
    ft.addToBackStack(null);
    ft.commit();
显示时,两个片段占据半屏幕(这是正常的)

活动加载时附加了onCreate中的片段A(这是确定的)

现在按下片段a中的一个按钮,我想用片段B替换屏幕上的片段a(完成了)

但是,当我进行反压时,我想用原始片段a替换片段B

    Log.d(TAG, "replacing fragment");
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(resId, fragment);
    ft.commit();
下面是我在onCreate中显示片段A的代码

    Log.d(TAG, "replacing fragment");
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(resId, fragment);
    ft.commit();
//不需要故意调用backbackback,这样碎片A就不能用back press分离

这是我的代码,点击按钮显示片段B

            Log.d(TAG, "replacing fragment");
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.setCustomAnimations(enterAnim, exitAnim);
    ft.replace(resId, fragment);
    ft.addToBackStack(null);
    ft.commit();
现在,当我用onbackpress方法写

getSupportFragmentManager().popBackStack();
事情就是这样:片段B被移除,片段A不显示在它后面。这意味着我得到了一个空白的白色屏幕,上面什么也没有,在碎片a应该在的地方

为什么会发生这种情况