фрагмент placehoder в макете

17

Предположим, что у меня есть несколько фрагментов :

public class FirstFragment extends Fragment { ... }

public class SecondFragment extends Fragment { ... }

public class ThirdFragment extends Fragment { ... }

У меня также есть основная активность , ее содержимое ( main.xml ):

<LinearLayout ...>

  <!-- How to have a fragment placehold without specify which fragment show here? -->
  <fragment>

</LinearLayout>

Мой вопрос заключается в том, что в файле выше файла компоновки, как я могу определить фрагмент-фрагмент , не указывая, какой фрагмент отображается здесь, а затем в java-коде My Activity , раздуйте правильный фрагмент для заполнителя?

Возможно ли это и как это сделать?

    
задан Leem.fin 07.03.2012 в 11:26
источник

1 ответ

31

Это возможно. В вашем main.xml определите место для фрагмента, назовем его «owner_placeholder»:

<LinearLayout ...>
 <FrameLayout android:id="@+id/fragment_placeholder" android:layout_weight="1"
        android:layout_width="0px"
        android:layout_height="match_parent" />
</LinearLayout>

В своей деятельности, когда вы хотите загрузить фрагмент:

YourFragment fragment = new YourFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_placeholder, fragment);
ft.commit();
    
ответ дан Drimmka 07.03.2012 в 11:45
  • ft.replace (...) следует заменить на ft.add (...) в моем случае. –  Leem.fin 13.03.2012 в 15:00
  • да, android: layout_width должен быть установлен в wrap_content –  Markus 10.12.2013 в 10:22
  • См. это для получения дополнительной информации: developer.android.com/training/basics/fragments/... –  Hardy 14.12.2014 в 00:06