我正在开发游戏,我想在玩家失败或完成关卡时显示Dialog。像这样的代码。
@Override
public void onDrawFrame(GL10 gl) {
if(fail) {
Dialog restart = new Dialog(SquareRenderer.this);
restart.setContentView(R.layout.restart);
restart.show();
}
}
log cat说无法在未调用Looper.prepare()
的线程内创建处理程序我该如何解决呢?
答案 0 :(得分:0)
您是否创建了Handler
?这将允许您在UI线程上显示Dialog
。像这样创建Handler
...
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
Dialog restart = new Dialog(SquareRenderer.this);
restart.setContentView(R.layout.restart);
restart.show();
break;
}
}
};
...然后当您需要显示它时,只需将消息发送到您的Handler
...
@Override
public void onDrawFrame(GL10 gl) {
if(fail) {
handler.sendMessage(Message.obtain(handler, 0));
}
}