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>

现在,第二个包含块运行良好。但是第一个会导致崩溃。

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 回答