Android Toast.makeText()没有显示出来

时间:2011-07-18 23:28:11

标签: java android

当用户按下某个按钮时,我希望当应用从我的网络服务器获取某些信息时,会显示一条小Toast.makeText()条消息,说Contacting server...

问题是Java的HttpClient.Execute()方法是同步的,因此它会阻止Toast显示,直到请求完成。

在发送请求时是否可以显示Toast?

e.g。

Toast.makeText(myContext, "Contacting server...", Toast.LENGTH_SHORT).show();
String result = WebServer.Contact("www.mywebsite.com"); //A wrapper method
Toast.makeText(myContext, "Result: " + result, Toast.LENGTH_SHORT).show();

此代码只是在请求完成之后快速闪烁第一个Toast ,然后显示第二个Toast。

2 个答案:

答案 0 :(得分:6)

要显示Toast消息,您需要从UI线程调用show()对象上的Toast。因此,将您的Toast对象放在UI线程运行的位置(例如AsyncTask的{​​{1}},onPreExecute()等。

我假设您的连接是在一个单独的线程中完成的。

答案 1 :(得分:3)

正如Pompe所说,你的HttpClient调用肯定应该在它自己的线程上,并且AsyncTask是一个很好的方式去那里。如果您想在用户开展业务时向用户显示某些内容,您可能需要使用{HttpClient调用完成时可以忽略的ProgressDialog(或其他一些Dialog)。然后,您可以显示Toast或任何您想要显示网络呼叫结果的内容。