AsyncTask 内に Toast を表示しようとしています。この最初のコード片はMyActivity
、 と呼ばれるアクティビティに配置され、正常に動作します。
Toast.makeText(this, "Toast!", Toast.LENGTH_SHORT).show();
次に、 and の新しいインスタンスを作成し、MyObject
を呼び出しますmethod()
。このコードは にも配置されMyActivity
ます。
MyObject obj = new MyObject(this);
obj.method();
これが の定義ですMyObject
。ProgressDialog は正常に動作しますが、トーストは表示されません。
public class MyObject {
Context cxt;
public MyObject(Context cxt) {
this.cxt = cxt;
}
public void method() {
new MyAsyncTask().execute();
}
private class MyAsyncTask extends AsyncTask<Object, Integer, Boolean> {
protected void onPreExecute() {
Toast.makeText(cxt, "Toast!", Toast.LENGTH_SHORT).show(); // works fine
}
protected Boolean doInBackground(Object... params) {
Looper.prepare();
Toast.makeText(cxt, "Toast!", Toast.LENGTH_SHORT).show(); // doesn't work
}
}
}
最初の例と以下でまったく同じことをしていると思いましたが、どうやら何かが欠けているようです。の代わりにgetApplicationContext()
andも試しましたが、同じ結果になりました。cxt.getApplicationContext()
cxt