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()方法,以至於放棄了這種方法,以後要多思考,想到的解決辦法如果完全不是自己想要的結果,一定要再檢查一遍,很有可能是某個小地方沒注意。奮鬥
發佈了39 篇原創文章 · 獲贊 46 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章