10-20 04:24:35.864: E/AndroidRuntime(1390): FATAL EXCEPTION: main
10-20 04:24:35.864: E/AndroidRuntime(1390): Process: com.example.navigationdrawertest, PID: 1390
10-20 04:24:35.864: E/AndroidRuntime(1390): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
10-20 04:24:35.864: E/AndroidRuntime(1390): at android.view.ViewGroup.addViewInner(ViewGroup.java:3562)
10-20 04:24:35.864: E/AndroidRuntime(1390): at android.view.ViewGroup.addView(ViewGroup.java:3415)
10-20 04:24:35.864: E/AndroidRuntime(1390): at android.view.ViewGroup.addView(ViewGroup.java:3391)
貌似是通过LayoutInflater实例化的一个布局(View)。被重复添加了两次。请给出详细一点的解决方案
在fragment中实例化一个布局,点击其他fragment后再点击回来报错
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-02 22:29关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题是因为你在Fragment中尝试添加了一个已经存在的视图到它的子视图中。为了解决这个问题,你需要确保你没有在你的Fragment中直接使用这个视图。你可以将这个视图从父视图中移除,并重新创建一个新的视图来替代它。
以下是一个示例:
// 在你的Fragment中 View view = LayoutInflater.from(context).inflate(R.layout.your_layout_id, null); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 每当点击时调用此方法 } }); // 将这个视图从父视图中移除 parent.removeView(view); // 创建一个新的视图来替换这个视图 View newView = LayoutInflater.from(context).inflate(R.layout.new_your_layout_id, null); newView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 每当点击新创建的视图时调用此方法 } }); // 添加新的视图到父视图中 parent.addView(newView);在这个例子中,我们首先获取了一个视图,然后将其从父视图中移除。然后我们创建了一个新的视图,并将其添加回父视图。这样就解决了问题。
解决 无用评论 打赏 举报