0

多くのフラグメントを持つアプリがあります。これは水平モードのレイアウトです:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment android:name="com.map.manager.ListUser"
          android:id="@+id/listuser_fragment"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="match_parent" />

    <fragment android:name="com.map.manager.DetailApp"
          android:id="@+id/detailapp_fragment"
          android:layout_weight="2"
          android:layout_width="0dp"
          android:layout_height="match_parent" />   

</LinearLayout>

私は自分のフラグメントを正しく見ることができますが、これを行うと:

            DetailUser appFrag = (DetailUser)
                    getSupportFragmentManager().findFragmentById(R.id.detailuser_fragment);

            if (appFrag != null) {
                // If article frag is available, we're in two-pane layout...

                // Call a method in the ArticleFragment to update its content
                appFrag.updateAppointmentView(position);

            } 
            else {
            DetailUser dtuser = new DetailUser();
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.detailapp_fragment, dtuser);
            transaction.commit();

フラグメントを置き換えることはできますが、古いフラグメントを背景に見ることができます..これを読みました静的フラグメントを置き換えることはできませんが、動的に追加するにはどうすればよいですか? (水平モードに複数..) 古いフラグメントを知らなくてもフラグメントを置き換えることはできますか?

4

1 に答える 1

0

フラグメントのコンテナ:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:id="@+id/fragmentLayout"
    >

     <FrameLayout
        android:id="@+id/framelayout1"
        android:layout_width="313dp"
        android:layout_height="match_parent" >
     </FrameLayout>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/framelayout2" >
    </FrameLayout>

</LinearLayout>



//Adding Detailuser fragment to framelayout1:

    DetailUser dtuser = new DetailUser();
            FragmentTransaction transaction =    getSupportFragmentManager().beginTransaction();
            transaction.add(R.id.framelayout1, dtuser);
            transaction.commit();
//Adding another fragment to framelayout1:

    Fragment frag = new Fragment();
            FragmentTransaction transaction =    getSupportFragmentManager().beginTransaction();
            transaction.add(R.id.framelayout2, frag);
            transaction.commit();

//Replacing fragment in framelayout:

    Fragment2 frag2 = new Fragment2();
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.framelayout1, frag);
                transaction.commit();
于 2013-02-20T19:34:58.237 に答える