De mon côté activity
, j'ai besoin d'appeler une classe interne et dans une méthode au sein de la classe, j'ai besoin de montrer AlertDialog
. Après l'avoir rejeté, lorsque vous appuyez sur le bouton OK, passez à Google Play pour achat.
Les choses fonctionnent parfaitement pour la plupart du temps, mais pour quelques utilisateurs, il plante builder.show()
et je peux voir "android.view.WindowManager$BadTokenException:
Impossible d'ajouter la fenêtre "dans le journal des pannes. Veuillez suggérer.
Mon code est à peu près comme ceci:
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();
}
}
}
}
J'ai également vu l'erreur dans une autre alerte où je ne transmets à aucune autre activity
. C'est simple comme ça:
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
. Je pense que si vous commentez la partie où vous allez à une nouvelle activité, cette erreur disparaîtra. L'erreur semble se produire car votre boîte de dialogue avant est complètement fermée, votre nouvelle activité démarre. Dans le onPostExecute()
, vous avez la boîte de dialogue d'alerte et vous donnez le contexte de l' login
activité. Mais vous naviguez vers l'autre activité, le contexte devient donc erroné. Par conséquent, vous obtenez cette erreur! Voir stackoverflow.com/questions/15104677/... question similaire.