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;
}
}
}
};
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)