java.lang.IllegalArgumentException:找不到id 0x7f0d006d的视图

时间:2017-07-29 10:50:53

标签: android android-fragments fragment illegalargumentexception

我希望在设备为平板电脑(横向)时添加两个片段。但是我得到了下一个错误: java.lang.IllegalArgumentException:找不到片段FragMap的id 0x7f0d006d(com.example.placesearch1:id / container2)的视图

我创建了两个布局:main_activity( for phone ):

<FrameLayout
        android:id="@+id/container1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true">

    </FrameLayout>

和main_activity( for tablet landscape - activity_main.xml(sw600dp-land):

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        >


    <FrameLayout
        android:id="@+id/container1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

    </FrameLayout>

    <FrameLayout
        android:id="@+id/container2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

    </FrameLayout>
    </LinearLayout>

我有地方的RecycleView(在container1中的main_activity布局)。当我点击该项目时,我得到一个地方的纬度和经度,并将包裹的值传递给地图片段,并将地图放入其中一个容器中:如果设备是手机,则在容器1中,但如果设备是平板电脑则在容器2中

如果设备是手机,它可以正常工作,但如果设备是平板电脑,那么我会收到错误。

GetPlace方法中的

Bundle bundle = new Bundle();
        bundle.putDouble("lat", place.getLat());
        bundle.putDouble("lng", place.getLng());
        FragMap fragMap = new FragMap();
        fragMap.setArguments(bundle);

        if(getResources().getBoolean(R.bool.isTab)) {

            getSupportFragmentManager().beginTransaction()
           .replace(R.id.container1, new ListFragment())
           .replace(R.id.container2, fragMap)
           .addToBackStack(null)
           .commit();


        }
        else {

            getSupportFragmentManager().beginTransaction()
            .replace(R.id.container1, fragMap)
           .addToBackStack(null)
           .commit();
        }

2 个答案:

答案 0 :(得分:1)

通常在为手机或平板电脑设计xml时,文件应该相同,同时xml内容也应相同。但是在您的手机中,只有一个framelayout,但对于平板电脑,为什么有两个framelayout

答案 1 :(得分:0)

从GetPlace方法

中删除此行
 .replace(R.id.container1, new ListFragment())