2013-03-19 104 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