二进制XML文件行#7:使用另一个片段复制id 0xffffffff,标记对话框或父ID 0x0

时间:2013-12-03 08:57:15

标签: android android-fragments android-alertdialog android-dialogfragment

我正在尝试显示包含DialogFragment的{​​{1}}。

请考虑以下事项:

我有一个DialogFragment fragment,里面有一个EntryFragment。点击textview后,我正在尝试打开另一个DialogFragment textview,但收到错误消息。

错误日志:

PopUpFragment

请注意,12-03 14:08:49.527: E/AndroidRuntime(3610): Caused by: java.lang.IllegalArgumentException: Binary XML file line #7: Duplicate id 0xffffffff, tag dialog, or parent id 0x0 with another fragment for com.savior.main.ContainerFragment 12-03 14:08:49.527: E/AndroidRuntime(3610): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:285) 12-03 14:08:49.527: E/AndroidRuntime(3610): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676) 包含片段PopUpFragment

popupfragment.xml:

ContainerFragment

在textview上单击,使用此代码库调用 PopUpFragment.java

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <fragment
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:padding = "10dp"
             android:tag="dialog"
             class="com.savior.main.ContainerFragment" />

</LinearLayout>

这是我的实际 PopUpFragment.java 相关代码,

PopUpFragment cf = new PopUpFragment().newInstace();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("FIELDS", fields);
bundle.putString("LINK-UUID", uuid);
cf.setArguments(bundle);
cf.show(getSupportFragmentManager(), "dialog");

1 个答案:

答案 0 :(得分:1)

为了解决这个问题,我做了两件事:

  1. 在片段类

    中将rootView声明为static
    protected static View rootView = null;
    
  2. onCreateView方法中的
  3. 检查rootView是否为null

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
            if( rootView == null )
                rootView = super.onCreateView( inflater, container, savedInstanceState );
    
            if( rootView != null )
                setUpMap();
    }
    
  4. 我希望这个解决方案可以帮到你。