我对 Androids Fragments 的问题有兴趣。
我有一个片段活动,它由一个带有 4 个选项卡的 TabHost 组成。这些选项卡之一显示图表。图表数据的计算很复杂,需要一段时间。问题:让我们假设用户单击特定选项卡,图表的计算开始并且一切正常。现在用户单击下一个选项卡,应用程序会显示内容。之后,用户切换回图表选项卡。所以它不会重新加载,我在 Diagramm-Fragment 的 onCreateView 中执行以下操作:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(layout == null){
layout = new PedelecRelativeLayout(getActivity());
initUI();
}
return layout;
}
如您所见,如果布局为空,它将被启动并且 initUI() 生成图表。
第一次单击该选项卡有效,但在第二次单击该选项卡时,应用程序崩溃并出现以下错误:
11-20 10:32:36.928: E/AndroidRuntime(9888): FATAL EXCEPTION: main
11-20 10:32:36.928: E/AndroidRuntime(9888): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
这是我的片段活动与选项卡主机的代码片段:
summaryDiagram = (SummaryDiagramFragment) fm.findFragmentByTag(TAB_DIAGRAM);
...
if(summaryDiagram != null){
ft.detach(summaryDiagram);
}
...
if(tabId.equals(TAB_DIAGRAM)){
if(summaryDiagram==null){
/** Create AndroidFragment and adding to fragmenttransaction */
summaryDiagram = new SummaryDiagramFragment();
ft.add(R.id.realtabcontent, summaryDiagram, TAB_DIAGRAM);
}else{
/** Bring to the front, if already exists in the fragmenttransaction */
ft.attach(summaryDiagram);
}
}
谢谢你的帮助,我很抱歉我的英语不好:-)