使用XML佈局和片段類。這裏我創建了一個包含2個片段的佈局。該類充氣佈局fragment_actionbarcompat.xml
(該代碼不顯示在這裏,但它是一個基本的佈局文件)。然後爲包含這兩個片段的活動創建一個佈局文件。
ActionBarCompatFragment類重寫onCreateView方法來擴大它的佈局。這被注入到片段標籤layoutwise。
在你的情況下,通常你不只是添加一個普通的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: [email protected]/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: [email protected]/fragment_composer -->
</fragment>
</RelativeLayout>
是的,這就是我。 上面的代碼顯示了我的Activity'onCreate()',它實例化了'MyListFragment extends ListFragment'。 但我想知道是否有更好的方式來「調用」一個片段除了我上面發佈的代碼(檢查null,創建新的myfragment,開始,提交等)。 – membersound
使用XML方式,Android系統將爲您實例化片段。它基本上在幕後讀取XML並使用反射來完成此操作。然後你可以通過調用Activity.getSupportFragmentManager()來獲得片段本身的句柄。findFragmentById(R.id. *); (刪除Activity.getFragmentManager()如果不使用支持包) –
哦,它確實沒有初始化片段我自己。你剛纔提到的findFragement就足夠了。非常感謝,現在讓我的代碼變得更好。 – membersound