Desde mi main activity
, necesito llamar a una clase interna y en un método dentro de la clase, necesito mostrar AlertDialog
. Después de descartarlo, cuando se presione el botón OK, reenvíe a Google Play para la compra.
Las cosas funcionan perfectamente la mayoría de las veces, pero para algunos usuarios se bloquea builder.show()
y puedo ver " "android.view.WindowManager$BadTokenException:
No se puede agregar la ventana" desde el registro de fallas. Sugiera.
Mi código es bastante parecido a esto:
public class classname1 extends Activity{
public void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.<view>);
//call the <className1> class to execute
}
private class classNamename2 extends AsyncTask<String, Void, String>{
protected String doInBackground(String... params) {}
protected void onPostExecute(String result){
if(page.contains("error"))
{
AlertDialog.Builder builder = new AlertDialog.Builder(classname1.this);
builder.setCancelable(true);
builder.setMessage("");
builder.setInverseBackgroundForced(true);
builder.setNeutralButton("Ok",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
dialog.dismiss();
if(!<condition>)
{
try
{
String pl = "";
mHelper.<flow>(<class>.this, SKU, RC_REQUEST,
<listener>, pl);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
});
builder.show();
}
}
}
}
También he visto el error en otra alerta en la que no estoy reenviando a ninguna otra activity
. Es tan simple como esto:
AlertDialog.Builder builder = new AlertDialog.Builder(classname1.this);
builder.setCancelable(true);
//if successful
builder.setMessage(" ");
builder.setInverseBackgroundForced(true);
builder.setNeutralButton("Ok",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
// dialog.dismiss();
}
});
builder.show();
}
//send to some other activity
. Creo que si comentas la parte en la que vas a una nueva actividad, este error desaparecerá. El error parece suceder porque su cuadro de diálogo anterior se descarta por completo y comienza su nueva actividad. En onPostExecute()
, tiene el diálogo de alerta y está dando el contexto de la login
Actividad. Pero está navegando a la otra actividad, por lo que el contexto se vuelve incorrecto. ¡Por lo tanto, está recibiendo este error! Consulte stackoverflow.com/questions/15104677/… una pregunta similar.