2014-01-19 21 views
0

我正在開發一個使用SurfaceView的簡單遊戲。我做了包含一些按鈕的佈局。我還做了一個功能來顯示一個彈出式窗口,該佈局用於在滿足特定條件時在遊戲狀態之間切換。 onDraw方法不斷調用,並在畫布上繪製一些位圖。當條件滿足時,彈出窗口函數被調用。如何在畫布前顯示彈出窗口?

我已經測試功能的遊戲線程陳述前,它工作得很好,但是當我把它的onDraw方法,應用程序崩潰的內部,引發以下錯誤日誌中: Can't create handler inside thread that has not called Looper.prepare()

如何解決它?

+0

嘗試這樣做((活動)的getContext()),它運行在不同的線程。runOnUIThread() – MikeHelland

+0

@MazeHatter我試圖用它但沒有希望。檢查我提交的答案。 Thnx –

+0

這應該已經runOnUiThread()(lowercade我在那裏)。處理程序解決方案實際上是相同的。 – MikeHelland

回答

0

我解決了使用處理程序如下問題:

final Handler handler2 = new Handler(); 
Runnable runnable2 = new Runnable() { 
    @Override 
    public void run() { 
     Main.initLetterSetsPop(); 
    } 
}; 

其中initLetterSetsPop()是在主要業務功能,以顯示彈出式窗口。 當我想在的onDraw()方法來顯示窗口,我只需使用handler2.post(runnable2);