使用fragmentTransaction.replace时会替换哪个片段?

时间:2015-11-07 17:43:21

标签: java android android-fragments fragment

我有一个activity_main.xml文件:

<?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中添加一个Fragment时,会添加哪个Fragment? 我的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);时 它将添加在我在xml中指定的1合2片段中,但是lm_fragment或pm_fragment?谢谢!

1 个答案:

答案 0 :(得分:1)

这是替换方法签名

public abstract FragmentTransaction replace (int containerViewId, Fragment fragment)

您的布局中没有此类ID android.R.id.content。 事情是你正在使用静态片段。但你需要动态。将两个片段标记替换为单个FrameLayout,id = android.R.id.content。或者更好地使用自己的ID。例如。 &#34; fragment_container&#34;,然后调用

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

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