2015-07-20 2 views
1

Это мой 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, имеющий идентификатор mapContainer. Но мой выше макет уже жил внутри фрагмента не в активности во время выполнения ..

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

Когда я пытаюсь сделать транзакцию фрагмент в этом контейнере.

Дается: не найдено ни одного вида поиска с идентификатором "@+id/Mapcontainer".

ответ

0

Вы вызываете фрагмент кода для замены после onCreateView элемента ItemListFragment? Поскольку view mapContainer существует только после того, как ItemListFragment прикреплен к макету.
И поскольку вы добавляете фрагмент внутри другого фрагмента, я думаю, вы должны использовать FragmentManager manager = getChildFragmentManager();

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(); 

И убедитесь, что идентификатор вашего контейнера, т.е. framelayout (вероятно) правильно ... R.id.mapContainer должен быть идентификатором рамки в MainActivity ...

Смежные вопросы