Java android碎片的最佳实践?

Java android碎片的最佳实践?,java,android,android-fragments,Java,Android,Android Fragments,目前,我正在调用并构建如下片段: if (getSupportFragmentManager().findFragmentById(R.id.fragment_list) == null) { list = new MyListFragment(); getSupportFragmentManager().beginTransaction().add(R.id.fragment_list, list).commit(); } 但我想知道这是否是所谓的最佳实践,因为在我看来,

目前,我正在调用并构建如下片段:

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

但我想知道这是否是所谓的最佳实践,因为在我看来,这似乎是很多样板代码。有更好的方法吗?

使用XML布局和片段类。在这里,我创建了一个包含2个片段的布局。该类对布局
fragment\u actionbarcompat.xml
(此处未显示该代码,但它是一个基本布局文件)进行膨胀。我为包含2个片段的活动创建了一个布局文件

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>

使用XML布局和片段类。在这里,我创建了一个包含2个片段的布局。该类对布局
fragment\u actionbarcompat.xml
(此处未显示该代码,但它是一个基本布局文件)进行膨胀。我为包含2个片段的活动创建了一个布局文件

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>


是的,这就是我所拥有的。上面的代码显示了我的Activity
onCreate()
,它实例化了
MyListFragment扩展ListFragment
。但是我想知道除了上面发布的代码之外,是否还有更好的方法“调用”片段(检查null、创建新的myfragment、begin、commit等)。它基本上是在后台读取XML,并使用反射来执行此操作。然后,可以通过调用Activity.getSupportFragmentManager().findFragmentById(R.id.*)获得片段本身的句柄;(如果不使用支持包,请删除Activity.getFragmentManager())哦,实际上,它可以在不初始化片段的情况下工作。只要你提到的那一点点就够了。非常感谢,这使我的代码现在好多了。是的,这就是我所拥有的。上面的代码显示了我的Activity
onCreate()
,它实例化了
MyListFragment扩展ListFragment
。但是我想知道除了上面发布的代码之外,是否还有更好的方法“调用”片段(检查null、创建新的myfragment、begin、commit等)。它基本上是在后台读取XML,并使用反射来执行此操作。然后,可以通过调用Activity.getSupportFragmentManager().findFragmentById(R.id.*)获得片段本身的句柄;(如果不使用支持包,请删除Activity.getFragmentManager())哦,实际上,它可以在不初始化片段的情况下工作。只要你提到的那一点点就够了。非常感谢,这使我的代码现在好多了。