如何从托管活动同时膨胀2个片段视图?

时间:2017-11-18 08:53:11

标签: android android-fragments android-activity

我在片段的主要活动中有这段代码。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mainView"
    android:orientation="vertical"
    android:layout_marginBottom="10dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:id="@+id/mainView2"/>


</LinearLayout>

我在我的主要活动中使用此代码来扩充碎片

FragmentManager fm = getSupportFragmentManager();
        fm.beginTransaction().add(R.id.mainView,new MainViewFragment())
                .add(R.id.mainView2,new SecondProductLayout())
                .commit();

但是我仍然得到第一个片段视图,我做错了什么以及如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

拆分活动屏幕两部分会在您的活动中夸大您的片段

答案 1 :(得分:0)

答案 2 :(得分:0)

你需要使用重量将你的布局分成两部分,像往常一样给两个片段充气。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:id="@+id/frameContainer"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
              android:orientation="vertical"
             tools:context="com.android.buffer.exampleapplication.MainActivity">

    <FrameLayout
        android:id="@+id/flFragment1"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

      <FrameLayout
          android:id="@+id/flFragment2"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

java代码来扩充片段。

getFragmentManager().beginTransaction().replace(R.id.flFragment1, FragmentA.getInstance(msg)).commit();
            getFragmentManager().beginTransaction().replace(R.id.flFragment2, FragmentA.getInstance(msg)).commit();