我为Android推出了一款TicTacToe游戏,并开始新游戏,我呼叫startActvityForResult()
让用户在新的Actvity中选择一些选项。然后我调用setResult()
和finish()
返回包含LinearLayout中SurfaceView的gameActivity。
但问题出现了:整个SurfaceView只是一个黑色区域,直到我点击某处,然后它就像它应该的那样:调用onTouchEvent()
方法,游戏变得可见。
我有什么想法可以摆脱那个黑屏?
我已经尝试在onResume()/ onPause期间设置LinearLayout和SurfaceView可见/不可见。并且invalidate()
或postInvalidate()
也无法正常工作。
我发现它似乎正确显示,如果表面被绘制两次,所以我通过布尔标志在postInvalidate()
内调用draw()
。
答案 0 :(得分:0)
如果没有任何代码或更详细的信息,这很难回答,但您应该在onPause()
/ onResume()
或onSurfaceDestroyed()
/中开始/停止渲染到表面视图onSurfaceCreated()
方法。所以基本上,你必须在活动生命周期中正确处理表面视图。
This非常专门处理这个主题(活动生命周期+表面视图)。
作为快速解决方法,您可以尝试在onTouchEvent()
或onResume
中手动拨打onSurfaceCreated()
。