我正在尝试将 2 个片段放入一个片段中。我在互联网上找到了一些代码,但据我所知,我没有成功将 2 个片段放入 1 个片段中。我已经看到了处理 FragmentManager 的技巧,尤其是方法 getChildFragmentManager() 但我不知道它如何处理 2 个片段。
对于这个故事,我使用了一个带有 ActionBar 的活动,它创建了 3 个片段。在其中一个中,我需要处理一个图形和一种菜单来更改图形比例。这样,我需要一个片段中的2个片段。
这是代码:
处理其他的片段:
public class GraphDisplayFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myFragmentView = inflater.inflate(R.layout.graph_fragment, container, false);
return myFragmentView;
}
}
绘制图形的代码:
public class GraphFragment extends Fragment {
private static final int SERIES_NR = 1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
GraphicalView myFragmentView = ChartFactory.getTimeChartView(this.getActivity(), getDateDemoDataset(), getDemoRenderer(),null);
return myFragmentView;
}
//some functions to set graph propreties
}
XML 文件:
graph_fragment.xml
<?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:id="@+id/graph_fragment"
android:name="com.test.GraphFragment"
android:layout_width="match_parent"
android:layout_height="259dp" >
</fragment>
<fragment
android:name="com.test.GraphDetailFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/graph_detail_fragment">
</fragment>
</LinearLayout>
带有测试实现的 graph_detail.xml
<?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" >
<TextView
android:id="@+id/textView1"
android:layout_width="211dp"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
奇怪的是,当我在 ActionBar 中的片段之间切换时它开始工作,但在 3-4 次移动后,我收到此错误:
android.view.InflateException: Binary XML file line #7: Error inflating class fragment
如果有人有解决方案,那就太棒了!