2014-08-28 4 views
0

В моем случае я хочу перейти от одного фрагмента к другому фрагменту. Это должно быть сделано, когда я нажимаю ListView. Поэтому я написал код транзакции фрагмента в onItemClick. Но я не знаю, как найти мой идентификатор контейнера для фрагмента, где мне нужно двигаться.Android: Как найти идентификатор контейнера фрагмента

Вот мой код.

lv.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      // TODO Auto-generated method stub 
      Fragment fragment = new MeetingFragment(); 
      FragmentManager fragmentManager = getActivity().getFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      fragmentTransaction.replace(R.id.MEETING, fragment); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 
     } 

    }); 

Я хочу перейти на MeetingFragment. Какой идентификатор я должен предоставить в этой фрагменте. Transaction.replace (R.id., Фрагмент). Пожалуйста, дайте идею. Заранее спасибо.

+0

Почему вы хотите использовать FragmentTransaction.replace? может быть, вам стоит только запустить активацию? – pskink

+0

у вас пробовал андроид.R.id.content? –

+0

Я думаю, что вы реализовали один интерфейс в действии с обратным вызовом, когда элемент щелкнул и попытался заменить новый фрагмент кода там. –

ответ

0

Сначала вы определяете макет. Например

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <!-- The main content view --> 

    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
    <!-- The navigation drawer --> 

    <ListView 
     android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="@color/WhiteSmoke" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" /> 

</android.support.v4.widget.DrawerLayout> 

Предположим, я хочу изменить фрагменты в WHOS идентификатор Framelayout является «content_frame», как показано выше.

Тогда соответствующий код будет

 FragmentManager fragmentManager = getFragmentManager(); 
     FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction(); 
     fragmentTransaction.replace(R.id.content_frame,new newFragment()); 
     fragmentTransaction.commit(); 

Где newFragment это фрагмент, который вы хотите переместить в.

0

Ваша деятельность, проведение фрагментов может содержать макет-ID, к которому мы должны добавить наши фрагменты.

к примеру моей деятельности холдинга fragmets имеют <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fragmentgroup" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:orientation="horizontal" > </LinearLayout>

Вы должны указать R.id.fragmentgroup в этом случае. Идентификатор - это макет, на который мы должны поместить наш фрагмент