当前位置: 代码迷 >> Android >> setContentView错误
  详细解决方案

setContentView错误

热度:19   发布时间:2016-05-01 21:14:44.0
setContentView异常
我的程序有两个视图
一个是主视图MainView,继承自SurfaceView
activity启动是就是设置这个视图为当前视图
还有一个是opengl的视图GlView,继承自GLSurfaceView
这两个视图之间没有任何关系
只是在MainView里的一个按钮里,点击一下就会调用setContentView(GlView)切换到gl视图显示
这时没有任何问题
而在GlView里调用setContentView(MainView)切换回去的时候出现异常了

ERROR/AndroidRuntime(4078): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

我程序里的这两个视图根本就没有什么父子关系的
为什么会有这样的异常?

------解决方案--------------------
MainView 因为之前已经加载过了,有了父级别的容器,之后又加载就会报错,需要在加载之前,让mainview的父级别先remove掉mainview,才能加载mainview。
你可以都加在在一个容器中,用隐藏和显示来切换。
------解决方案--------------------
...
只是在MainView里的一个按钮里...
...

SurfaceView里只能有一个直接子类,你可以用一个其它布局把里面的所有控件装起来,再把这个布局放在SurfaceView里就可以了,如果还没有解决,贴出你的XML布局来看看。