无法为片段交易找到此视图?

时间:2015-07-20 07:08:12

标签: android android-fragments

这是我的ItemListFragment

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/dark_gray"
    android:orientation="vertical">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_weight=".15"
        android:weightSum="10"
        android:background="@color/white"
        android:layout_height="0dp">

        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_gravity="center"
            android:src="@drawable/action_back"
            android:id="@+id/imageView2" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:layout_gravity="center_vertical"
            android:weightSum="1"
            android:orientation="horizontal">
            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/idSpinner"
                style="@style/TextViewSpinnerItem"
                android:popupBackground="@color/dark_gray"
                android:layout_gravity="center"
                android:layout_weight=".8"
                android:spinnerMode="dropdown" />
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight=".2"
                android:visibility="gone"
                android:layout_gravity="center_vertical"
                android:src="@drawable/down"/>
        </LinearLayout>

        <ImageView

            android:layout_width="0dp"
            android:layout_height="30dp"
            android:text="sort"
            android:layout_weight="1.5"
            android:background="@drawable/iconssort"
            android:id="@+id/btnSort" />

        <ImageView

            android:layout_width="0dp"
            android:layout_height="30dp"
            android:background="@drawable/iconsfilter"
            android:layout_weight="1.5"
            android:id="@+id/btnFilter" />
    </LinearLayout>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".85"
        android:id="@+id/mapContainer"
        android:layout_marginTop="10dp">
        <ListView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:divider="@android:color/transparent"
            android:dividerHeight="10dp"
            android:id="@+id/lvCategoryItems"
            android:layout_gravity="center_vertical"/>
    </FrameLayout>
</LinearLayout>

我想在容器中替换地图片段,就像FrameLayout ID为mapContainer一样。但是我的上面的布局已经在运行时位于片段而非活动中。

Fragment fragment = new MapViewFragment();
FragmentManager manager =   getActivity.getSupportFragmentManager();
manager.beginTransaction().replace(R.id.mapContainer,   fragment).commit();

当我尝试在此容器中进行片段事务时。

它给出:没有找到ID为"@+id/Mapcontainer"的视图。

2 个答案:

答案 0 :(得分:0)

你的片段类初始化是错误的......

更改代码

Fragment fragment = new MapViewFragment();
FragmentManager manager =   getActivity.getSupportFragmentManager();
manager.beginTransaction().replace(R.id.mapContainer,   fragment).commit();

MapViewFragment fragment = new MapViewFragment();
FragmentManager manager =   getActivity.getSupportFragmentManager();
manager.beginTransaction().replace(R.id.mapContainer,   fragment).commit();

并确保容器的id,即framelayout(可能)是正确的... R.id.mapContainer应该是MainActivity中framelayout的id ...

答案 1 :(得分:0)

在ItemListFragment的onCreateView之后调用代码替换片段吗?因为视图mapContainer只存在于附加到布局的ItemListFragment之后。
而且因为你在另一个片段中添加了一个片段,我认为你应该使用FragmentManager manager = getChildFragmentManager();