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()方法,以至於放棄了這種方法,以后要多思考,想到的解決辦法如果完全不是自己想要的結果,一定要再檢查一遍,很有可能是某個小地方沒注意。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM