Android OpenGL ES: не может создать обработчик внутри потока, который не вызвал Looper.prepare () - PullRequest
0 голосов
/ 08 февраля 2012

Я занимаюсь разработкой игры и хочу показать диалог, когда игрок провалился или завершил уровень.Код такой.

    @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 ()

Как я могу это исправить.

1 Ответ

0 голосов
/ 08 февраля 2012

Вы создали Handler? Это позволит вам показать 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));
    }
}
...