我有Fragment
,其中包含另外两个Fragment
,即ListFragment
和常规Fragment
。当我向父Fragment
充气时,我收到InflateException
运行时错误。
这是因为我的XML布局代码中的#11引用了这个:
<fragment
android:id="@+id/fragment1"
android:name="com.nanospark.TMS.fragment_profile_list"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_below="@+id/new_profile_button" />
请注意,上面的XML指的是嵌套 Fragment
。
嵌套Fragment
是Android支持的功能吗?是否有任何替代方案或修复此问题?
logcat的:
04-17 15:00:58.198: E/AndroidRuntime(1400): FATAL EXCEPTION: main
04-17 15:00:58.198: E/AndroidRuntime(1400): android.view.InflateException: Binary XML file line #11: Error inflating class fragment
编辑1: 从我发现它得到支持 http://developer.android.com/about/versions/android-4.2.html#NestedFragments
但是我找不到任何嵌套片段和用它们填充父片段的好例子。
答案 0 :(得分:2)
您可以在片段代码中添加它:
public class YourFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.your_fragment_layout, null);
if (getChildFragmentManager().findFragmentByTag("main") == null)
{
if (getActivity() == null)
return null;
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
NewsMainFragment nf = (YourNested) YourNestedFragementClass.instantiate(getActivity(), YourNestedFragementClass.class.getName(),savedInstanceState);
ft.add(R.id.fragment_container, nf,"main");
ft.commit();
}
return v;
}
}