2011-07-18 142 views
1

當用戶按下按鈕時,我想要一個小的Toast.makeText()消息顯示出類似於Contacting server...的內容,而應用程序從我的Web服務器獲取一些信息。Android Toast.makeText()沒有顯示

問題是Java的HttpClient.Execute()方法是同步的,所以它阻止Toast顯示直到請求完成。

請求正在發送時,是否有方法讓Toast顯示?

例如

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(); 

此代碼簡單地閃爍先敬酒真快請求完成後,然後將它顯示了第二個麪包。

回答

3

正如Pompe所說,你的HttpClient調用肯定應該在它自己的線程上,而AsyncTask是一個很好的方法去那裏。如果您想在用戶業務中顯示用戶的某些內容,則可能需要使用您可以使用的ProgressDialog(或某些其他對話框),而不是在HttpClient調用完成時關閉。然後,您可以顯示Toast或任何想要顯示網絡呼叫結果的內容。

6

爲了顯示Toast消息,您需要在UI線程的Toast對象上調用show()。因此,請將您的Toast對象放在您的UI線程運行的位置(例如,在AsyncTaskonPreExecute()onPostExecute()等中)。

我假設你的連接是在單獨的線程中完成的。