实际上,我总是在我的片段中重用我的视图,如下所示:
private View mView = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
if (mView == null)
mView = inflater.inflate(R.layout.view);
return mView;
}它起作用了,有了查看器等等。现在,我也开始在简单的活动中使用我的片段,如果并且只有当我将片段添加到后台时,这将因为java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.而失败。
所以我的问题是:
发布于 2014-05-07 13:31:36
我目前正在重用视图,如下所示:
if(view == null){
view = (ViewGroup) inflater.inflate(R.layout.news_list, container, false);
} else {
((ViewGroup) view.getParent()).removeView(view);
}
return view;我不知道这种方法是否正确,但它似乎对我有用。
注意:我使用这个aproach是因为我在片段中有一个listview,当用户点击一个项目时,它会加载一个新的片段(片段管理器替换当前的列表片段)。然后,当用户单击same按钮时,由于我正在重用片段的相同旧视图(在使用FM删除时未被销毁),则用户将继续在打开详细片段视图之前的位置查看列表。
https://stackoverflow.com/questions/18637134
复制相似问题