在新的執行緒(Thread)中執行 Toast訊息提示
在Android當中若要在新的執行緒當中使用TOAST都會出現以下的錯誤訊【java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()】。若要可以正常執行請參閱以下解決方式。
首先必須先在Class當中宣告。
使用方式
首先必須先在Class當中宣告。
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
Toast.makeText(this.getApplicationContext(), msg.getData().getString("MESSAGE"), Toast.LENGTH_SHORT).show();
}
};
使用方式
public void Click()
{
final ProgressDialog pdialog = ProgressDialog.show(_activity, "Login", "登入中...", false);
new Thread()
{
public void run()
{
//加入此句
Looper.prepare();
//要執行的事情
new SocketClient(CreateXML()).run();
pdialog.dismiss();
//下面這裡是重點
Message status = handler.obtainMessage();
Bundle data = new Bundle();
data.putString("MESSAGE", "登入完畢");
status.setData(data);
handler.sendMessage(status);
Looper.loop();
}
}.start();
}
請教大大 程式中 13行 new SocketClient(CreateXML()).run();的用意為何?
回覆刪除implements Runnable Class,可將需要做的事情寫在此處。
刪除可參考http://developer.android.com/reference/java/lang/Runnable.html說明