我的应用程序中有三个视图,我希望能够隐藏它们并有选择地将它们带回来。我尝试使用按钮点击事件触发的以下内容:
if(SurfaceView().isShown()==true){
SurfaceView().setVisibility(View.INVISIBLE);
}else if(!SurfaceView().isShown()){
SurfaceView().setVisibility(View.VISIBLE);
}
然而,这通常会冻结视图,然后关闭应用程序,除了以下内容之外没有错误:
NvRmChannelSubmitt:NvError_IoctlFailed,错误代码为14
编辑:我所指的观点实际上是min3d渲染中的_glsurfaceviewpublic class RendererActivity extends Activity implements ISceneController
{
public Scene scene;
protected static GLSurfaceView _glSurfaceView;
我的主要活动是扩展RenderActivity
编辑:添加了logcat转储
关闭时出现的唯一事情是这些
03-02 15:57:00.338: I/Min3D(28364): Renderer.onSurfaceChanged()
03-02 15:57:00.355: D/(28364): NvRmChannelSubmit: NvError_IoctlFailed with error code 14
答案 0 :(得分:2)
您的代码中可能会有一个复制/粘贴拼写错误。您是否尝试显示glSurfaceView
SurfaceView
是否隐身?如果是这样,试试这个:
if( SurfaceView().isShown() )
{
glSurfaceView().setVisibility(View.GONE);
}
else if ( !SurfaceView().isShown() )
{
glSurfaceView().setVisibility(View.VISIBLE);
}
答案 1 :(得分:1)
使用View.GONE会使视图不可见,并且不会占用布局中的任何空间。
答案 2 :(得分:1)
所以我解决了我的问题。我想当你使用opengl和glsurfaceviews时,你必须将我上面的内容改为以下内容:
if(glSurfaceView().isShown()==true){
SurfaceView().onPause();<----------------------added to pause view
SurfaceView().setVisibility(View.GONE);
}else if(!glSurfaceView().isShown()){
SurfaceView().onResume();<---------------------added to resume view
SurfaceView().setVisibility(View.VISIBLE);
}
SurfaceView()。onPause()告诉glsurfaceview我希望渲染器暂停,反之亦然onResume()。
现在我不确定这是针对这种情况的最终解决方案,但它正在为此工作。