バックグラウンドでAsyncTaskによって完了したタスクがあります。ある時点で、何かが完成したトーストを発行する必要があります。
Caused by: Java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
を試してみましたが失敗しました
どうやってやるの?
onPostExecute-UIスレッドまたはpublishProgress()
;で実行します。あなたのdoinbackgroundと
protected void onProgressUpdate(Integer... progress) {
}
http://developer.Android.com/reference/Android/os/AsyncTask.html
doInBackground内でトーストできます
トーストを表示する場所にこのコードを追加します
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(<your class name>.this, "Cool Ha?", Toast.LENGTH_SHORT).show();
}
});
runOnUiThread メソッドを使用して、バックグラウンドスレッドからUIを操作することもできます。
Toastを使用する場合は、次のメソッドを使用する必要があります:onProgressUpdate()
protected Integer doInBackground(Void...Params) {
int check_point = 1;
publishProgress(check_point);
return check_point;
}
protected void onProgressUpdate(Integer integers) {
if(integers == 1) {
Toast.makeText(classname.this, "Text", 0).show();
}
バックグラウンドスレッドからトーストを表示する場合は、doInBackgroundからrunOnUiThreadを呼び出す必要があります。別の方法があるとは思いません。
編集:私はそれを取り戻します。 UIスレッドで実行されるonProgressUpdateを実装して、Toastを表示し、doInBackgroundからpublishProgressを呼び出すことができると思います。
DoInBackgroundにトーストを表示する場合は、AsyncTaskのOnPostExecuteメソッドで使用できます。
protected void onPostExecute(String file_url) {
Toast.makeText(getApplicationContext(),"Your Message", Toast.LENGTH_LONG).show();
pDialog.dismiss();//dismiss the progress dialouge
}