Create Alert Dialog inside of Handler

android, multithreading

Solution

You can't use application context to create dialogs. Use an Activity context instead.

Also, that way of creating dialogs is bound to create problems later on, especially if the activity is restarted for whatever reason. You should either use Dialog fragments, or managed dialogs (Activity's `showDialog()` method)

Problem

I want to create an alert dialog from a handler which gets signaled when a thread terminates this is my code which causes: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application ``` Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (dialog != null) { dialog.dismiss(); dialog = null; } switch (serverResponseCode) { case 200: { AlertDialog alertDialog; alertDialog = new AlertDialog.Builder(getApplicationContext()).create(); alertDialog.setTitle("Super :)"); alertDialog.setMessage("Poza a fost trimisa cu success."); alertDialog.setButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { finish(); } }); alertDialog.show(); serverResponseCode = -1; break; } default: { AlertDialog alertDialog; alertDialog = new AlertDialog.Builder(getApplicationContext()).create(); alertDialog.setTitle("Eroare :("); alertDialog.setMessage("Eroare la trimiterea pozei."); alertDialog.setButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { finish(); } }); alertDialog.show(); break; } } } }; ```

Original source

Related problems