簡體   English   中英

Android片段的最佳做法?

[英]Best practice with android fragments?

目前,我正在調用並構建如下片段:

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

但是我不知道這是否是所謂的最佳實踐,因為在我看來這是很多樣板代碼。 有更好的方法嗎?

使用XML布局和Fragment類。 在這里,我創建了一個包含2個片段的布局。 該類使布局fragment_actionbarcompat.xml膨脹(該代碼未在此處顯示,但它是一個基本的布局文件)。 然后,為包含兩個片段的活動創建一個布局文件。

ActionBarCompatFragment類重寫onCreateView方法來擴大其布局。 它將以布局方式注入片段標簽。

通常情況下,您不只是添加一個普通的ListFragment ,還擴展ListFragment並將自定義代碼添加到其中。 這是一種更好地支持“模型-視圖-控制器”等奇特模式的方法。 片段是隔離的隔離區,因此您可以根據需要在活動之間重用它們。 在大多數情況下,您的類將持有加載片段所需數據的邏輯。

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM