2012-12-07 52 views
-1

問題很簡單。其實當我嘗試吐司消息,它沒有得到顯示。你能指導我解決這個問題嗎?Toast沒有顯示在AsyncTask

protected String doInBackground(Void... params) { 
      if (result.equals("200")) { 
       Toast.makeText(CallArduino,appliance + " Success ",Toast.LENGTH_LONG).show();  
      }else { 

       Toast.makeText(CallArduino, "Failed", Toast.LENGTH_SHORT).show();  
      } 


    return "success"; 
    } 
+0

作爲回答說,你應該在UI線程中敬酒。如果doInBackground方法返回一個布爾值,那麼它也可能會有幫助,所以postExecute()可以選擇要做的東西。 – 2012-12-07 15:05:36

回答

4

Toast不能在後臺線程顯示你應該在UI線程中調用它,在onPostExecute()例如

+0

你可以提供一個工作示例.. – user1822729

3

您正試圖對後臺線程進行UI操作,這是禁止的。

任何UI操作(包括顯示敬酒)都必須在UI線程中完成。

你可以例如在onPostExecute方法來顯示你的麪包:

protected String doInBackground(Void... params) { 
    // do your background stuff 
} 

protected void onPostExecute (Result result) { 
    if (result.equals("200")) { 
     Toast.makeText(CallArduino,appliance + " Success ",Toast.LENGTH_LONG).show();  
    }else { 

     Toast.makeText(CallArduino, "Failed", Toast.LENGTH_SHORT).show();  
    } 
} 
+0

2-08 12:28:42.909:E/AndroidRuntime(4342):java.lang.NullPointerException 12-08 12:28:42.909:E/AndroidRuntime(4342):\t at com.example.homeautomation.CallArduino $ httpTask .onPostExecute(CallArduino.java:121) 12-08 12:28:42.909:E/AndroidRuntime(4342):\t at com.example.homeautomation.CallArduino $ httpTask.onPostExecute(CallArduino.java:1) 12-08 12:28:42.909:E/AndroidRuntime(4342):\t at android.os.AsyncTask.finish(AsyncTask.java:602) 12-08 12:28:42.909:E/AndroidRuntime(4342):\t在android。 os.AsyncTask.access $ 600(AsyncTask.java:156) – user1822729