2013-07-25 3 views
1

У меня три фрагмента, и они расположены так, как показано ниже:для Android - Вложение Фрагменты Нет Просмотр Найдено

«осколочные А и осколочные С не подключен, но осколочные В и С являются каждый фрагмент содержит 1 ListView так. каждый раз, когда я запускаю событие, он переходит к следующему фрагменту ».

фрагмента А ---> (Внутри осколочные A) Фрагмент B ---> (Внутри осколочные B) Фрагмент С

  • Фрагмент А (main.xml)
  • Фрагмент B (R.id.contentFragment)
  • Фрагмент С (R.id.contentFragment)

можно отобразить Фрагмена t A и Fragment B, и все в порядке, , но, если я вызываю фрагмент C от B Я получил "No view found in contentFragment=0x7f040039".

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" 
       android:background="@color/white" 
       android:id="@+id/frameLayout"  
       > 

      <ListView 
      android:id="@android:id/list" 
      android:layout_width="fill_parent" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentBottom="true" 
      android:layout_height="wrap_content" 
      > 
      </ListView> 

    <FrameLayout 
    android:id="@+id/contentFragment" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" > 
    </FrameLayout> 


    </FrameLayout> 

</FrameLayout> 

FragmentA.java

Внутри фрагмента А, чтобы открыть фрагмент В

Fragment fragment1 = new FragmentB(); 

     FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); 
     transaction.replace(R.id.contentFragment, fragment1, fragMainGroups); 
     transaction.addToBackStack(fragMainGroups); 
     transaction.commit(); 

FragmentB.java

Внутри Фрагмент B, чтобы открыть фрагмента С

 String fragGroups = "groups"; 

    Fragment fragment1 = new FragmentC(); 

    FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); 
    transaction.replace(R.id.contentFragment, fragment1, fragGroups); 
    transaction.addToBackStack(fragGroups); 
    transaction.commit(); 

FragmentC.java

Внутри фрагмента С

public class FragmentItems extends ListFragment{ 

    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
    } 
      public void onActivityCreated(Bundle savedInstanceState) { 
       super.onActivityCreated(savedInstanceState); 
      } 

      public void onCreate(Bundle e) 
      { 
       super.onCreate(e); 
      } 

       @Override 
       public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
        View rootView = inflater.inflate(R.layout.load_items_activity, container, false); 

        return rootView; 
       } 
} 

LogCat

07-25 18:10:20.388: E/FragmentManager(24703): No view found for id 0x7f040039 (com.jinisys.restoplusordering:id/contentFragment) for fragment FragmentItems{4156f480 #0 id=0x7f040039 groups} 
07-25 18:10:20.388: E/FragmentManager(24703): Activity state: 

07-25 18:10:20.388: E/FragmentManager(24703): No view found for id 0x7f040039 (com.jinisys.restoplusordering:id/contentFragment) for fragment FragmentItems{4156f480 #0 id=0x7f040039 groups} 
07-25 18:10:20.388: E/FragmentManager(24703): Activity state: 
07-25 18:10:20.718: E/AndroidRuntime(24703): FATAL EXCEPTION: main 
07-25 18:10:20.718: E/AndroidRuntime(24703): java.lang.IllegalArgumentException: No view found for id 0x7f040039 (com.jinisys.restoplusordering:id/contentFragment) for fragment FragmentItems{4156f480 #0 id=0x7f040039 groups} 
07-25 18:10:20.718: E/AndroidRuntime(24703): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:903) 
07-25 18:10:20.718: E/AndroidRuntime(24703): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 
07-25 18:10:20.718: E/AndroidRuntime(24703): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
07-25 18:10:20.718: E/AndroidRuntime(24703): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 
07-25 18:10:20.718: E/AndroidRuntime(24703): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 
07-25 18:10:20.718: E/AndroidRuntime(24703): at android.os.Handler.handleCallback(Handler.java:615) 

ответ

0

Как ваша ошибка заявляет вы ищете вид с идентификатором contentFragmentTtems внутри фрагмента B, основной вид, который является contentFragment, а не весь main.xml. Поэтому, если вы хотите добавить новый фрагмент, вы должны сделать это также из фрагмента A.

+0

Предположим, что 'contentFragmentTtems' удален. Мне не нужен этот сэр. См. Обновленный код. Я хочу заменить то, что 'contentFragment' содержит в Fragment C, как то, что я сделал в Fragment A. Я использую только' main.xml' для отображения вложенных фрагментов. – rahstame

+0

Ну, если вы хотите заменить свой фрагмент B фрагментом C, то да, вы должны заменить 'contentFragment', но, как я сказал ранее, вам нужно сделать это из фрагмента A, а не из фрагмента B. – Desert

+0

Я уверен, что если я понял, что вы имеете в виду с этим сэром, 'делать это из Фрагмента А, а не из Фрагмента B'. 'Frag A' и' Frag C' не подключены, но 'Frag B' и' C'. Каждый фрагмент содержит 1 listview, поэтому каждый раз при запуске события он переходит к следующему фрагменту. – rahstame

0
<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" 
       android:background="@color/white" 
       android:id="@+id/frameLayout"  
       > 

      <ListView 
      android:id="@android:id/list" 
      android:layout_width="fill_parent" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentBottom="true" 
      android:layout_height="wrap_content" 
      > 
      </ListView> 

    <FrameLayout 
    android:id="@+id/contentFragmentb" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" > 
    </FrameLayout> 
<FrameLayout 
    android:id="@+id/contentFragmentc" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" > 
    </FrameLayout> 

    </FrameLayout> 

</FrameLayout> 

Это должно сработать.

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