Von meinem Hauptteil aus activity
muss ich eine innere Klasse aufrufen und in einer Methode innerhalb der Klasse muss ich zeigen AlertDialog
. Wenn Sie nach dem Schließen die OK-Taste drücken, leiten Sie sie zum Kauf an Google Play weiter.
Die Dinge funktionieren meistens perfekt, aber für einige Benutzer stürzt es ab builder.show()
und ich kann im "android.view.WindowManager$BadTokenException:
Absturzprotokoll sehen, dass kein Fenster hinzugefügt werden kann . Bitte vorschlagen.
Mein Code ist ziemlich ähnlich:
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();
}
}
}
}
Ich habe den Fehler auch in einer anderen Warnung gesehen, in der ich nicht an eine andere weiterleite activity
. So einfach ist das:
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
. Ich denke, wenn Sie den Teil kommentieren, in dem Sie zu einer neuen Aktivität gehen, wird dieser Fehler verschwinden. Der Fehler scheint aufzutreten, da Ihr vorheriger Dialog vollständig geschlossen wird und Ihre neue Aktivität beginnt. In der onPostExecute()
haben Sie den Warndialog und geben den Kontext der login
Aktivität an. Sie navigieren jedoch zu der anderen Aktivität, sodass der Kontext falsch wird. Daher erhalten Sie diesen Fehler! Siehe stackoverflow.com/questions/15104677/… ähnliche Frage.