I try to display a Toast inside a AsyncTask.
This first piece of code is placed in an activity that we may call MyActivity, and works fine:
Toast.makeText(this, "Toast!", Toast.LENGTH_SHORT).show();
Then I create a new instance of MyObject and calls method(). This code is also placed in MyActivity.
MyObject obj = new MyObject(this);
obj.method();
This is the definition of MyObject. The ProgressDialog works fine, but no toast is showed.
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
}
}
}
I believed I was doing exactly the same thing in my first example and below, but appearently, I'm missing something. I've also tried getApplicationContext() and cxt.getApplicationContext() instead of cxt, but with the same result.