我正在尝试显示包含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");
答案 0 :(得分:1)
为了解决这个问题,我做了两件事:
在片段类
中将rootView声明为staticprotected static View rootView = null;
检查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();
}
我希望这个解决方案可以帮到你。