我正在使用SurfaceView开发一款简单的游戏。我制作了包含一些按钮的布局。我还创建了一个功能来显示一个弹出窗口,该窗口具有该布局,用于在满足某些条件时在游戏状态之间切换。不断调用onDraw方法并在画布上绘制一些位图。满足条件时,将调用弹出窗口函数。
我已经在游戏线程声明之前测试了该函数并且它运行良好但是当我在onDraw方法中调用它时,应用程序崩溃并在日志中抛出以下错误:
Can't create handler inside thread that has not called Looper.prepare()
。
请问如何解决?
答案 0 :(得分:0)
我使用处理程序解决了这个问题,如下所示:
final Handler handler2 = new Handler();
Runnable runnable2 = new Runnable() {
@Override
public void run() {
Main.initLetterSetsPop();
}
};
其中initLetterSetsPop()
是Main活动中显示弹出窗口的函数。
当我想在onDraw()方法中显示窗口时,我只需使用handler2.post(runnable2);