2011-07-18 93 views
1

ユーザーがボタンを押したときに、Toast.makeText()というメッセージが表示されて、Contacting server...のように表示されます。Android Toast.makeText()が表示されない

問題は、JavaのHttpClient.Execute()メソッドは同期型であるため、要求が完了するまで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(); 

このコードは、単に本当に速い後の要求が完了し、その後、第2トーストを示して最初のトーストを点滅します。

答えて

3

ポンペ氏によると、あなたのHttpClientコールは確かに独自のスレッドでなければならず、AsyncTaskはそこへ行く良い方法です。ビジネスをしているときに何かを表示したい場合は、HttpClient呼び出しが終了したときに閉じることができるProgressDialog(またはその他のダイアログ)を使用することができます。 Toastや、ネットワークコールの結果を表示したいものを表示することができます。

6

Toastメッセージを表示するには、Toastオブジェクトのshow()をUIスレッドから呼び出す必要があります。したがって、ToastオブジェクトをUIスレッドの実行場所に配置してください(例:AsyncTaskonPreExecute()onPostExecute()など)。

私はあなたの接続が別のスレッドで行われていると仮定しています。

関連する問題