1

現時点では、次のようなフラグメントを呼び出して構築しています。

if (getSupportFragmentManager().findFragmentById(R.id.fragment_list) == null) {
     list = new MyListFragment();
     getSupportFragmentManager().beginTransaction().add(R.id.fragment_list, list).commit();
}

しかし、これはいわゆるベストプラクティスではないかと思います。これは、ボイラープレートコードのように思えるからです。より良い方法はありますか?

4

1 に答える 1

1

XMLレイアウトとフラグメントクラスを使用します。ここでは、2つのフラグメントを使用してレイアウトを作成します。クラスはレイアウトを膨らませますfragment_actionbarcompat.xml(そのコードはここには示されていませんが、基本的なレイアウトファイルです)。そして、2つのフラグメントを格納するアクティビティのレイアウトファイルを作成します。

ActionBarCompatFragmentクラスは、onCreateViewメソッドをオーバーライドして、レイアウトを拡張します。これは、レイアウトごとにフラグメントタグに挿入されます。

あなたの場合、通常はプレーンを追加するだけでなく、カスタムコードをListFragment拡張して追加します。ListFragmentこれは、Model-View-Controllerのような派手なパターンをより適切にサポートする方法です。フラグメントは分離されたコンパートメントであるため、必要に応じてアクティビティ間でフラグメントを再利用できます。ほとんどの場合、クラスはフラグメントが必要とするデータをロードするためのロジックを保持します。

ActionBarCompatFragment.java

@Override
public final View onCreateView(LayoutInflater inflater, ViewGroup root, Bundle savedInstanceState) {
    final int layoutId = R.layout.fragment_actionbarcompat;
    return inflater.inflate(layoutId, root, false);
}

ファイル:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/ActionBarCompatFragment"
        android:layout_width="@dimen/ActionBarSize"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        class="com.packagename.app.ActionBarCompatFragment" >

        <!-- Preview: layout=@layout/fragment_actionbarcompat -->
    </fragment>

    <fragment
        android:id="@+id/ComposerFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@id/ActionBarCompatFragment"
        class="com.packagename.app.ComposerFragment" >

        <!-- Preview: layout=@layout/fragment_composer -->
    </fragment>

</RelativeLayout>
于 2012-05-19T16:55:54.010 に答える