java.lang.IllegalStateException:无法更改fragment的容器ID

时间:2017-04-25 09:56:59

标签: android android-layout android-fragments

我尝试通过单击按钮来交换两个片段的位置。 首先,我在我的xml文件中添加了两个FrameLayout。

+

然后在initView

时添加片段
if(preg_match('/([\w-]+) published successfully/',$line,$matches){

}

但小片段还没有显示!我试图交换两个片段的位置,但小片段仍然没有出现。当我尝试通过点击按钮来改变他们的位置时,它会出现:

 <FrameLayout
    android:id="@+id/content_frame_small"
    android:layout_width="120dp"
    android:layout_height="200dp"
    android:layout_marginTop="50dp"
    android:layout_alignParentRight="true"
    android:clickable="true"
    android:rotation="90" />

<FrameLayout
    android:id="@+id/big_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

点击时,这是我的代码:

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    findViewById(R.id.content_frame_small).bringToFront();
    if (mapFragment == null) {
        mapFragment = new MapFragment();
    }
    ft.addToBackStack(MapFragment.TAG);
    ft.add(R.id.content_frame_small, mapFragment, MapFragment.TAG);
    if (cameraPreviewFragment == null) {
        cameraPreviewFragment = new CameraPreviewFragment();
    }
    ft.addToBackStack(CameraPreviewFragment.TAG);
    ft.add(R.id.big_fragment, cameraPreviewFragment, CameraPreviewFragment.TAG);
    ft.commitAllowingStateLoss();

似乎

1 个答案:

答案 0 :(得分:0)

@Sarah Huang

  

在你的代码中,你没有提交交易,这就是为什么你的小   片段未显示。

ft.addToBackStack(MapFragment.TAG);
ft.add(R.id.content_frame_small, mapFragment, MapFragment.TAG);

你试图这样做

  ft.addToBackStack(MapFragment.TAG);
  ft.add(R.id.content_frame_small, mapFragment, MapFragment.TAG).commit();