【问题标题】:how to fix inflating fragment inside onther如何修复另一个内部的膨胀片段
【发布时间】:2014-10-09 08:14:16
【问题描述】:

我正在尝试为我的片段制作页脚。我成功地做到了,但是当我第一次加载这个片段时它仍然运行良好,但是当我更改导航抽屉中的片段并第二次尝试获取这个片段时,应用程序崩溃和日志错误告诉我一个错误:

 android.view.InflateException: Binary XML file line #17: Error inflating class fragment
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
 Caused by: java.lang.IllegalArgumentException: Binary XML file line #17: 
 Duplicate id 0x7f070084, tag null, or parent id 0x7f070082 with another fragment for   com.example.user.unchained.FooterHome

所以任何人都有解决问题的想法

OnCreateView 功能:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        v =   inflater.inflate(R.layout.fragment_homes, container, false);

        listView = (ListView) v.findViewById(R.id.homeList);

        l = new HomeListAdapter(this, homeList);
        listView.setAdapter(l);

        return v;

    }

主要布局 XML:

<RelativeLayout 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:background="@color/dark_grey"
android:id="@+id/fHome"
tools:context="com.example.user.unchained.HomesActivity$PlaceholderFragment">

<ListView
    android:id="@+id/homeList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:dividerHeight="1dp"
    android:choiceMode="singleChoice"
    android:listSelector="@drawable/list_row_selector" />

<fragment
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:name="com.example.user.unchained.FooterHome"
    android:layout_alignParentBottom="true"
    android:id="@+id/foo"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    tools:layout="@layout/footer_home" />


 </RelativeLayout>

页脚布局 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"
android:background="#272822"
android:id="@+id/homeFooter"
tools:context="com.example.user.unchained.FooterHome">


<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="What's New ?"
android:textSize="16dip"
android:layout_marginTop="12dip"
android:layout_marginLeft="10dip"
android:drawableLeft="@drawable/status"
android:id="@+id/watsN"
android:textColor="@color/connexion_button"
android:layout_gravity="left|top" />


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text=" | "
    android:textSize="25dip"
    android:layout_marginTop="6dip"
    android:layout_marginLeft="145dip"
    android:textColor="@color/connexion_button"
    android:layout_gravity="left|top" />


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Check In"
    android:textSize="16dip"
    android:layout_marginTop="12dip"
    android:layout_marginLeft="165dip"
    android:drawableLeft="@drawable/checkin"
    android:id="@+id/checkIn"
    android:textColor="@color/connexion_button"
    android:layout_gravity="left|top" />


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text=" | "
    android:textSize="25dip"
    android:layout_marginTop="6dip"
    android:layout_marginLeft="265dip"
    android:textColor="@color/connexion_button"
    android:layout_gravity="left|top" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text=" Picture"
    android:textSize="16dip"
    android:layout_marginTop="12dip"
    android:layout_marginLeft="290dip"
    android:drawableLeft="@drawable/camera"
    android:id="@+id/postPic"
    android:textColor="@color/connexion_button"
    android:layout_gravity="left|top" />

 </FrameLayout>

【问题讨论】:

  • 从更改您的new HomeListAdapter(this, homeList) 开始。如果它接收一个上下文作为第一个参数,你应该传递 getActivity() 而不是这个。
  • 为什么要getActiviy?我有一个片段中的列表,而不是一个活动!
  • HomeListAdapter 构造函数的第一个参数是什么?
  • 一个片段而不是一个活动!

标签: android android-fragments


【解决方案1】:

您的错误消息说:“重复 id 0x7f070084...”这让我认为如果您的片段的根有一个 id,您不能两次添加相同的片段。

这只是一个猜测,但请尝试在根元素上不使用 android:id 属性。

更新

看看你是否能找出错误消息所指的 id。检查你的 R 类。它是从布局 xml 文件中自动生成的,它为您使用“@+id/some_name”表示法添加的每个 id 生成唯一编号。

错误消息提到了 id 0x7f070084 或 id 0x7f070082 的问题。它没有按名称提及它们,这可能会给你一个更好的提示,在哪里寻找问题。

但是您可以在自动生成的 R 类中查找名称。在 Android Studio 上,您可以在以下路径中找到 R 类:app/build/generated/source/r/debug/com/example/user/unchained/debug。我不知道 Eclipse 是否使用了不同的路径,但我相信你可以弄清楚。

打开 R.java 文件并搜索错误消息中提到的 ID 号。

【讨论】:

  • 它也说“或”。所以可能是错误不在id上
  • 没有确切的哪个 id ?
猜你喜欢
  • 2021-06-26
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多