2012-02-08 58 views
0

我正在開發的遊戲處理程序,我想顯示對話框時,播放器出現故障或完整級別。這樣的代碼。機器人的OpenGL ES:無法創建()內螺紋已不叫Looper.prepare

@Override 
    public void onDrawFrame(GL10 gl) { 
     if(fail) {   
    Dialog restart = new Dialog(SquareRenderer.this); 
    restart.setContentView(R.layout.restart); 
    restart.show(); 

     } 
    } 

日誌貓說:無法創建內螺紋處理程序尚未調用Looper.prepare()

我怎麼能解決這個問題。

回答

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)); 
    } 
} 
+0

我現在嘗試過。它會引發「不可活動java.lang.illegalstateexception系統服務之前的OnCreate()」 – smyl 2012-02-08 19:24:53

+0

你在哪裏把處理?通過它的聲音,您需要在活動獲得其上下文後將其放入。你有沒有嘗試在最後實例化'Handler'的你'的onCreate()'或者如果它是在你的渲染類(我假設它是)則實例化它在你的構造。 – DRiFTy 2012-02-08 19:41:49

+0

我的課就像是公共類渲染擴展活動實現了渲染我把處理程序中的onCreate它拋出的NullPointerException現在 – smyl 2012-02-10 00:03:00

相關問題