二进制XML文件行#17:使用另一个片段复制id,tag null或parent id

时间:2014-10-07 13:00:16

标签: java android xml android-fragments

我试图将一个片段插入到另一个片段中,并且我已经成功完成了这个,直到我第一次吃午餐时它的主要片段正在工作但是当我试图重新加载时片段应用程序崩溃,我有这个错误: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 我尝试了两种解决方案第一个是覆盖onDestroyView方法。

@Override
    public void onDestroyView() {
        super.onDestroyView();
        PlaceholderFragment f = (PlaceholderFragment) getFragmentManager()
                .findFragmentById(R.id.f);
        if (f != null)
            getFragmentManager().beginTransaction().remove(f).commit();
    }

第二个是在视图已经存在的情况下进行冲浪并尝试在新视图显示之前将其删除

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

        if (v != null) {
            ViewGroup parent = (ViewGroup) v.getParent();
            if (parent != null)
                parent.removeView(v);
        }


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

即使这两个解决方案对我不起作用并仍然存在问题,请您提出其他任何解决方案

主要片段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/f"
    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="#000"
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>

1 个答案:

答案 0 :(得分:0)

我认为你应该使用getChildFragmentManager。您无法在XML中使用子片段。

例如你应该怎么做:

     if (getChildFragmentManager().findFragmentByTag("settingsFragment") == null) {
        FragmentTransaction ft = getChildFragmentManager().beginTransaction();
        settingsFragment = new FastSettingsFragment();
        ft.add(R.id.container, settingsFragment, "settingsFragment");
        ft.commit();
    }