在新的執行緒(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說明