2015-11-07 2 views
0

У меня есть activity_main.xml файл:Какой фрагмент будет заменен при использовании фрагментаTransaction.replace?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal"> 

<fragment 
android:name="fragments" 
android:id="@+id/lm_fragment" 
android:layout_height="match_parent" 
android:layout_weight="1" 
android:layout_width="0dp"/> 

<fragment 
android:name="fragments" 
android:id="@+id/pm_fragment" 
android:layout_height="match_parent" 
android:layout_width="0dp" 
android:layout_weight="2"/> 

</LinearLayout> 

Так что у меня 2-фрагмент в моей деятельности И когда я добавить фрагмент в android.R.id.content, который будет добавлен фрагмент? Мои Mainactivity.java:

if(config.orientation == Configuration.ORIENTATION_LANDSCAPE){ 
LM_Fragment lm_Fragment = new LM_Fragment(); 
fragmentTransaction.replace(android.R.id.content, lm_Fragment); 
}else{ 
PM_Fragment pm_Fragment = new PM_Fragment(); 
fragmentTransaction.replace(android.R.id.content, pm_Fragment); 
} 

fragmentTransaction.commit(); 
} 

LM_Fragment и PM_Fragment используется для режима ландшафта и портретном режиме. И когда я использую fragmentTransaction.replace(android.R.id.content, lm_Fragment); Он будет добавлен в 1 в 2 фрагменте, который я указал в xml, но где lm_fragment или pm_fragment? Спасибо!

+0

Проблема объясняется, здесь, в этом блоге с 2011 https://portabledroid.wordpress.com/2011/04/19/программно-и-макет-фрагменты / –

ответ

1

Вот заменить метод подписи

public abstract FragmentTransaction replace (int containerViewId, Fragment fragment) 

У вас нет такой идентификатор android.R.id.content в макете. Дело в том, что вы используете статические фрагменты. Но вам нужна динамика. Замените оба фрагмента тегом одним FrameLayout с id = android.R.id.content. Или лучше использовать свой собственный идентификатор. Например. "Fragment_container", а затем вызвать

fragmentTransaction.replace(R.id.fragment_container, lm_Fragment); 

и

fragmentTransaction.replace(R.id.fragment_container, pm_Fragment); 
Смежные вопросы