4

Android レイアウト ファイル activity_item_list.xml に失敗しました。内容は以下のとおりです。

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/item_list"
    android:name="xxx.xxx.xxx.ItemListFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    tools:context=".ItemListActivity"
    tools:layout="@android:layout/list_content" />

まあ、それはクラッシュします。クラッシュログは次のとおりです。

android.view.InflateException: Binary XML file line #1: Error inflating class <unknown>

ここにすべての手順をリストします。

  1. Eclipse では、ウィザードを使用して新しいプロジェクトを作成し、マスター/詳細フローを選択します

  2. ウィザードが終了した後、ウィザードによって生成された 4 つのレイアウト xml を取得しました: activity_item_detail.xml、activity_item_twopane.xml、activity_item_list.xml、fragment_item_detail.xml

  3. activity_item_twopane.xml を変更しましょう。いくつかのレイアウトを再利用したい。

元の activity_item_twopane.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:baselineAligned="false"
    android:divider="?android:attr/dividerHorizontal"
    android:orientation="horizontal"
    android:showDividers="middle"
    tools:context=".ItemListActivity" >

    <fragment
        android:id="@+id/item_list"
        android:name="xxx.xxx.xxx.ItemListFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        tools:layout="@android:layout/list_content" />

    <FrameLayout
        android:id="@+id/item_detail_container"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3" />
</LinearLayout>

変更されたファイル:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:baselineAligned="false"
    android:divider="?android:attr/dividerHorizontal"
    android:orientation="horizontal"
    android:showDividers="middle"
    tools:context=".ItemListActivity" >

    <include
        layout="@layout/activity_item_list"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <include
        layout="@layout/activity_item_detail"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3"/>
</LinearLayout>

これで、2 番目の include-block がうまく機能します。しかし、最初のものはクラッシュを引き起こします。

activity_item_detail.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/item_detail_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ItemDetailActivity"
    tools:ignore="MergeRootFrame" />

そして、以下のように activity_item_list.xml を変更しようとしましたが、それでもクラッシュします....

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/item_list"
        android:name="xxx.xxx.xxx.ItemListFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        tools:context=".ItemListActivity"
        tools:layout="@android:layout/list_content" />

</FrameLayout>

Android がフラグメントをサポートできない理由がわかりません。誰が私に言うことができます。ありがとう!

4

1 に答える 1

1

フラグメントを独自に膨らませようとしたなど、より多くのコンテキストを提供していただけますか? もしそうなら、私が知る限り、それは機能しません。別のレイアウトに埋め込む必要があります。これを使用して、フラグメントの使用について詳しく学ぶことができます: http://developer.android.com/guide/components/fragments.html

それが役に立てば幸い

于 2013-03-26T08:33:00.697 に答える