2012-02-26 82 views
16

我試圖用我定義視圖佈局的相同方式來定義XML中的一個片段佈局。如何從XML定義片段的佈局?

這可能嗎?我嘗試了幾件事,但沒有一件似乎工作。

我的活動佈局如下所示(main.xml中):

<?xml version="1.0" encoding="utf-8"?> 
<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <fragment 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:name="full.lommeregner.Lommeregnerrv2Activity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/lommeregnerv2"> 
    </fragment> 

</ListView> 

現在,因爲我不是通過原始的Java代碼生成佈局的忠實粉絲,我想我的定義片斷如下(fragment_lommeregner .xml):

<fragment 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:name="full.lommeregner.Lommeregnerrv2Activity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/lommeregnerv2"> 
     <!-- my content was located here (some textviews, buttons and so on). --> 
    </fragment> 

我做錯了什麼?我如何通過XML定義片段的佈局?

回答

15

片段的工作方式非常類似於一個活動,因爲您需要一個Java類文件來處理它。你不能只是通過創建一個片段佈局創建一個片段 - 你需要一個類爲您的片段:

  1. 創建一個佈局XML和活動的子類爲您的活動
  2. 創建一個佈局XML和片段子類的片段
  3. 領帶兩人在你的活動佈局XML在一起(或使用FragmentTransaction如果你想做到這一點在Java代碼)

如果您還沒有這樣做,閱讀,再閱讀和消化一切本頁內容: https://developer.android.com/guide/components/fragments.html

這裏有很多,但碎片現在是Android應用程序的重要組成部分,因此它需要閱讀。好消息是碎片的基礎很簡單。

+1

他們並非嚴格要求,但在很多情況下他們會讓你的生活更輕鬆。 – adamp 2012-02-26 16:28:49

+0

當前自動生成的Eclipse示例使用FragmentTransactions我認爲...該視圖由靜態片段類生成並從函數調用返回。我目前正在研究如何添加自己的選項卡。 – anon58192932 2013-02-06 01:32:59

+0

「Fragment」類的實例如何指定哪個XML文件包含其佈局? 'Activity'有'setContentView(R.layout.my_activity_layout)',可以在'onCreate()'中調用。有沒有類似的片段? – dinosaur 2016-04-13 05:51:31

10

只需添加到您的<fragment>標籤物業:

tools:layout="@layout/your_layout_xml" 

而在你的main.xml(或<fragment>標籤的容器)到您的父容器(在這種情況下ListView):

xmlns:tools="http://schemas.android.com/tools"