Android IllegalStateException: The specified child already has a parent问题解决办法
最近遇到一個很讓人頭疼的問題,使用viewpager動態添加頁面或者刪除頁面時出現了問題(java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first),在stackoverflow上找到了解決辦法。(http://stackoverflow.com/questions/22936886/java-lang-illegalstateexception-while-using-viewpager-in-android)
原文是:
the problem is that in your adapters method?instantiateItem
you call?container.addView(v);
but every?View?can have only one parent,
so it can be added only one time to a container via?addView(...).
When you open the popup the first time, everything works, because?v
doesn't have a parent that time. But when you open your popupwinow the second time,
it adds the view again to the container. That cerates the error.
Try to destroy the view if you close the popup view or remove all children views from it with
container.removeAllViews()
解決辦法是在instantiateItem中使用如下方式:
ViewGroup parent = (ViewGroup) v.getParent();if (parent != null) { parent.removeAllViews();} container.addView(v);中間很多次嘗試已經接近答案,但是習慣性的去把v.getParent()強制轉化為view,view沒有removeView()方法,以至于放棄了這種方法,以后要多思考,想到的解決辦法如果完全不是自己想要的結果,一定要再檢查一遍,很有可能是某個小地方沒注意。
轉載于:https://www.cnblogs.com/zhujiabin/p/7569601.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Android IllegalStateException: The specified child already has a parent问题解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打印日志心得
- 下一篇: 图片懒加载原理-实例二