2013-03-19 108 views
0

我有吐司消息,我在後臺線程中顯示。吐司無法顯示

這裏是我想要顯示在我的AsyncTask

ParseDetails Objparsecities = new ParseDetails(
     new ByteArrayInputStream(result.toString() 
       .getBytes("UTF-8"))); 
if ((Objparsecities.parse().size()) == 0) { 

    Toast.makeText(getApplicationContext(), 
      "No result found for" + params[0], Toast.LENGTH_LONG) 
      .show(); 

} else 
    lstresponse = Objparsecities.parse(); 
} 

我可以知道我在做什麼錯誤。

謝謝:)

+0

那是簡單的活動還是延伸其他的東西 – 2013-03-19 09:51:01

+0

你確定你的密碼是真的嗎?把吐司放在別的地方也試試。 – 2013-03-19 09:51:03

+1

你不能在後臺線程顯示它,因爲它是一個UI元素...如果你使用asynchtask然後顯示onPostExecute ... 或嘗試在UIThread上運行它 – DeltaCap 2013-03-19 09:52:01

回答

0

這裏就是我想在我的AsyncTask顯示。

AsyncTask提供了一些允許用戶使用特定信息更新UI的方法。所以,你可以給你的麪包進入

  • onPreExecute()
  • onProgressUpdate()
  • onPostExecute()

這些方法對主(UI)線程上運行,並允許更新或修改UI。

如果你想顯示Toast與後臺處理過程中的一些信息,請撥打publishProgress(),其中直接調用onProgressUpdate()方法您doInBackground()方法,在那裏,你可以簡單地調用Toast.show()

0

嘗試使用runOnUiThread

if ((Objparsecities.parse().size()) == 0) { 
    context.runOnUiThread(new Runnable(){ 
    public void run() { 
     Toast.makeText(context, 
        "No result found for" + params[0], Toast.LENGTH_LONG) 
        .show(); 
    } 
    }); 
} 
0
onPostExecute - executes on UI thread or publishProgress(); in your doinbackground and 

protected void onProgressUpdate(Integer... progress) { 
} 

AsyncTask