2012-12-07 53 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