Я пытаюсь отобразить тост внутри AsyncTask.
Этот первый фрагмент кода помещен в действие, которое мы можем назвать MyActivity
, и отлично работает:
Toast.makeText(this, "Toast!", Toast.LENGTH_SHORT).show();
Затем я создаю новый экземпляр 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()
и cxt.getApplicationContext()
вместо cxt
, но с тем же результатом.