问题

I am using fragments, when I instantiate a fragment the first time it it. but the second time I got this exception. I couldn't find the line where I got the error?

04-04 08:51:54.320: E/AndroidRuntime(29713): FATAL EXCEPTION: main

04-04 08:51:54.320: E/AndroidRuntime(29713): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addViewInner(ViewGroup.java:3013)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addView(ViewGroup.java:2902)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addView(ViewGroup.java:2859)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addView(ViewGroup.java:2839)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.NoSaveStateFrameLayout.wrap(Unknown Source)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.BackStackRecord.run(Unknown Source)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.FragmentManagerImpl.execPendingActions(Unknown Source)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.FragmentManagerImpl$1.run(Unknown Source)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.os.Handler.handleCallback(Handler.java:587)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.os.Handler.dispatchMessage(Handler.java:92)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.os.Looper.loop(Looper.java:132)

04-04 08:51:54.320: E/AndroidRuntime(29713): at android.app.ActivityThread.main(ActivityThread.java:4126)

04-04 08:51:54.320: E/AndroidRuntime(29713): at java.lang.reflect.Method.invokeNative(Native Method)

04-04 08:51:54.320: E/AndroidRuntime(29713): at java.lang.reflect.Method.invoke(Method.java:491)

04-04 08:51:54.320: E/AndroidRuntime(29713): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)

04-04 08:51:54.320: E/AndroidRuntime(29713): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)

04-04 08:51:54.320: E/AndroidRuntime(29713): at dalvik.system.NativeStart.main(Native Method)

Here are what i do when i click on an element of my list fragment.

// If we are not currently showing a fragment for the new

// position, we need to create and install a new one.

RouteSearchFragment df = RouteSearchFragment.newInstance(index);

// Execute a transaction, replacing any existing fragment

// with this one inside the frame.

FragmentTransaction ft = fragmentManager.beginTransaction();

ft.replace(R.id.details_full, df);

ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);

ft.commit();

The first time it is Ok, I click element2 from list, it's also ok; but when I return to element1 I got this bug.

Thanks every one!

回答1:

When you override OnCreateView in your RouteSearchFragment class, do you have the

if(view != null) {

return view;

}

code segment?

If so, removing the return statement should solve your problem.

You can keep the code and return the view if you don't want to regenerate view data, and onDestroyView() method you remove this view from its parent like so:

@Override

public void onDestroyView() {

super.onDestroyView();

if (view != null) {

ViewGroup parent = (ViewGroup) view.getParent();

if (parent != null) {

parent.removeAllViews();

}

}

}

回答2:

Sorry to post to an old question but I was able to fix it using a totally different solution. I was getting this exception but I changed the first line of my onCreatView override from this:

View result = inflater.inflate(R.layout.customer_layout, container);

...to this:

View result = inflater.inflate(R.layout.customer_layout, container, false);

I have no idea why but using the override that accepts the boolean as the third param fixed it. I think it tells the Fragment and/or Activity not to use the "container" as the parent of the newly-created View.

回答3:

I have facing this issue many time.

Please add following code for resolve this issue :

@Override

public void onDestroyView() {

super.onDestroyView();

if (view != null) {

ViewGroup parentViewGroup = (ViewGroup) view.getParent();

if (parentViewGroup != null) {

parentViewGroup.removeAllViews();

}

}

}

Thanks

回答4:

If you have this statement..

View view = inflater.inflate(R.layout.fragment1, container);//may be Incorrect

Then try this.. Add false as third argument.. May be it could help..

View view = inflater.inflate(R.layout.fragment1, container, false);//correct one

回答5:

I had this code in a fragment and it was crashing if I try to come back to this fragment

if (mRootView == null) {

mRootView = inflater.inflate(R.layout.fragment_main, container, false);

}

after gathering the answers on this thread, I realised that mRootView's parent still have mRootView as child. So, this was my fix.

if (mRootView == null) {

mRootView = inflater.inflate(R.layout.fragment_main, container, false);

} else {

((ViewGroup) mRootView.getParent()).removeView(mRootView);

}

hope this helps

回答6:

It also happens when the view returned by onCreateView() isn't the view that was inflated.

Example:

View rootView = inflater.inflate(R.layout.my_fragment, container, false);

TextView textView = (TextView) rootView.findViewById(R.id.text_view);

textView.setText("Some text.");

return textView;

Fix:

return rootView;

Instead of:

return textView; // or whatever you returned

回答7:

I had this problem and couldn't solve it in Java code. The problem was with my xml.

I was trying to add a textView to a container, but had wrapped the textView inside a LinearLayout.

This was the original xml file:

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@android:id/text1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceListItemSmall"

android:gravity="center_vertical"

android:paddingLeft="16dp"

android:paddingRight="16dp"

android:textColor="#fff"

android:background="?android:attr/activatedBackgroundIndicator"

android:minHeight="?android:attr/listPreferredItemHeightSmall"/>

Now with the LinearLayout removed:

android:id="@android:id/text1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceListItemSmall"

android:gravity="center_vertical"

android:paddingLeft="16dp"

android:paddingRight="16dp"

android:textColor="#fff"

android:background="?android:attr/activatedBackgroundIndicator"

android:minHeight="?android:attr/listPreferredItemHeightSmall"/>

This didn't seem like much to me but it did the trick, and I didn't change my Java code at all. It was all in the xml.

回答8:

You are adding a View into a layout, but the View already is in another layout. A View can't be in more than one place.

回答9:

This solution can help :

public class FragmentItem extends Android.Support.V4.App.Fragment

{

View rootView;

TextView textView;

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

if (rootView != null)

{

ViewGroup parent = (ViewGroup)rootView.Parent;

parent.RemoveView(rootView);

} else {

rootView = inflater.Inflate(Resource.Layout.FragmentItem, container, false);

textView = rootView.FindViewById(Resource.Id.textViewDisplay);

}

return rootView;

}

}

回答10:

I solved it by setting attachToRoot of inflater.inflate() to false.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_overview, container, false);

return view;

}

回答11:

in your xml file you should set layout_width and layout_height from wrap_content to match_parent. it's fixed for me.

android:id="@+id/container"

android:layout_width="match_parent"

android:layout_height="match_parent" />

来源:https://stackoverflow.com/questions/10007094/java-lang-illegalstateexception-the-specified-child-already-has-a-parent

java match parent_java.lang.IllegalStateException: The specified child already has a parent相关推荐

  1. 安卓java.lang.IllegalStateException: The specified child already has a parent.解决方案

    在使用ViewPager的时候遇到一个错误java.lang.IllegalStateException: The specified child already has a parent. You ...

  2. 关于viewpager 里嵌套 listview 同时实现翻页功能的“java.lang.IllegalStateException: The specified child...异常处理...

    这几天做项目用到了ViewPager,因为它可以实现左右划动多个页面的效果,然后 再每个页面里使用ListView,运行时总是出现"PagerAdapter java.lang.Illega ...

  3. Android IllegalStateException: The specified child already has a parent问题解决办法

    最近遇到一个很让人头疼的问题,使用viewpager动态添加页面或者删除页面时出现了问题(java.lang.IllegalStateException: The specified child al ...

  4. java.lang.IllegalStateException: Error starting child错误的产生与解决

    经过网友解惑, 一般原因有: 1,jar版本不一致 2,servlet配置重复(xml+注解) 3,servlet配置映射少了'/',(路径错误) 严格意义上我的错误是属于第3种, 错在哪呢? 你们看 ...

  5. IDEA 启动报错:java.lang.IllegalStateException: failed to create a child event loop 问题解决

    遇到的问题 昨天电脑自动更新了,今天死活启动不了项目,看到idea的提示是: idea日志如下 根据提示说 查看idea的启动日志: 2018-11-20 17:35:42,010 [ 46737] ...

  6. Java.lang.IllegalStateException Activity has been destroyed

    12-07 11:13:14.030 13836-13836/com.xxx.xxx.android E/error.out: 检测到严重错误,程序即将退出java.lang.RuntimeExcep ...

  7. 转:java.lang.IllegalStateException异常产生的原因及解决办法

    地址:http://jorton468.blog.163.com/blog/static/72588135201102441617287/ 问题描述: 错误类型大致为以下几种: java.lang.I ...

  8. java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction. in /U

    错误内容如下 java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction ...

  9. 批量下载的实现及java.lang.IllegalStateException异常

    在工作流的一张表单里可能会有多个步骤上传附件,在用户的待办中往往会存在多条带有附件的任务,如果一一打开并且点击下载链接下载,不仅费时,而且繁琐,用户体验较差. OA系统采用的是FastDFS做为文件服 ...

最新文章

  1. 小米KK:智能家居谁能破局?
  2. MSN8.0测试邀请发放
  3. php 实现联想式 搜索,PHP实现搜索联想功能(基于字典树算法)
  4. Android 开发学习随笔
  5. 【计算机网络】计算机网络 OSI 参考模型 与 TCP/IP 参考模型 对比
  6. 自定义例外:当没有查询到员工信息时,抛出例外
  7. java如何获得当前文件路径
  8. jQuery中position()与offset()区别
  9. run spark pi_Spark Run本地设计模式
  10. 保姆级教程,终于搞懂脏读、幻读和不可重复读了!(经典回顾)
  11. 爬了7000+条内衣信息,只为探究妹纸们的偏好!
  12. 拆单软件 有屋-镶嵌铜条门 草图大师sketchup 衣柜橱柜全屋定制 下料机 酷家乐 三维家 海迅 云熙
  13. 五道口男子计算机职业技术学院,哈哈!双鸭山大学、五道口男子职业技术学校…盘点高校那些“天雷滚滚”的绰号...
  14. 个体户查询_2019年最新修订小规模/一般纳税人?个体户的区别 附最新增值税率表...
  15. Kubernetes网络插件(CNI)超过10Gbit/s网络的基准结果
  16. Creo二次开发:参数化设计
  17. Property [text] not found on type [java.lang.String]
  18. laravel中提供DB facade(原始查找)、查询构造器、Eloquent ORM三种操作数据库方式
  19. cs字体样式和盒子模型学习1
  20. zoc license code

热门文章

  1. Python 用Django创建自己的博客(2)
  2. 使用 CometD、Apache 和 Camel 的 502 代理错误
  3. OSChina 周二乱弹 —— 高手应该习惯寂寞
  4. R读写Excel文件中数据的方法
  5. 程序哲学how to make love,简称 html
  6. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(七)
  7. JavaScript正则表达式19例(2)
  8. 8月8日白暨豚宣告灭绝
  9. FMPlayer组件说明
  10. [CareerCup] 7.7 The Number with Only Prime Factors 只有质数因子的数字