2012-03-24 79 views
0

我正在使用場景管理,並且我從場景中擴展了不同的類,用於顯示不同的模式。 我在Toasting消息中得到了概率。 在我的模式1類從現場延伸我想顯示敬酒消息,但它給錯誤 「不能創建內螺紋處理程序尚未調用looper.prepare()」AndEngine場景中的敬酒

我試圖做這裏面的處理程序,但相同結果。我試圖在主類中創建一個靜態處理程序,但沒有結果。 任何人都可以告訴我解決方案嗎?

回答

1

您還可以使用以下方式創建Toast消息。

mainActivity.toastOnUiThread("No moves available for REDO", 
       Toast.LENGTH_SHORT); 
4

的關鍵是在UI線程中運行它 - 這是我用

public void gameToast(final String msg) { 
    this.runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      Toast.makeText(MyMainActivity.this, msg, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
+0

但問題是,在我的場景類從場景擴展上述代碼不起作用。沒有任何runonuithread方法。 – 2012-03-26 04:20:16

+0

嘗試myActivity.this.runOnUiThread()其中myActivity是您的主要活動的名稱。 – jmroyalty 2012-03-26 12:27:53

+1

只是爲了澄清 - runOnUiThread()方法是Android Activity類的一部分 - 並非AndEngine中的任何內容,不是Scene,不是SceneManager。但是,您的主要活動擴展了BaseGameActivity(或由AndEngine提供的其中一個變體),它們總是必須擴展Android Activity類,所以這就是調用隱藏的地方。 – jmroyalty 2012-03-26 13:35:33

2

從BaseGameActivity擴展類只是做一個方法類似

public static void MakeToast(String Msg) 
{ 
    message = Msg; 
    Handles.sendEmptyMessage(0); 
} 

static Handler Handles = new Handler() 
{ 
    public void handleMessage(android.os.Message msg) { 

     if(msg.what==0) 
     { 
      Toast.makeText(myCxt, message, Toast.LENGTH_SHORT).show(); 
     } 
    }; 
}; 

和場景中的類你會打電話給你。 YourBaseGameActivity.MakeToast(「Hello World」); YourBaseGameActivity.MakeToast(「Hello World」);

消息也是一個靜態字符串變量。