Ich versuche eine Zahlung durchzuführen, die mehr Sekunden in Anspruch nimmt. Ich möchte nicht, dass der Benutzer auf der Ansicht bleibt, bis er die Erfolgsmeldung sieht Sobald sie die Zahlungsschaltfläche in der Hintergrundtask On Pre execute drücken, erscheint ein Popup mit der Meldung "Processing your payment". Sobald der Benutzer auf OK klickt, wird zu der anderen Ansicht navigiert. Sobald die Hintergrundaufgabe abgeschlossen ist, möchte ich in der aktuellen Ansicht ein weiteres Popup mit der Meldung "Ihre Zahlung war erfolgreich" anzeigen.So zeigen Sie den Alert-Dialog in der aktuellen Aktivität an, nachdem die Hintergrundaufgabe abgeschlossen ist
Hier ist der Code-Schnipsel,
private class payment extends AsyncTask<Void, Void, Void>
{
payment() {
}
@Override
protected void onPreExecute() {
AlertDialog.Builder successDialog=new AlertDialog.Builder(PayActivity.this);
successDialog.setMessage("Processing your payment");
successDialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
Intent lResultIntent = new Intent();
setResult(RESULT_OK, lResultIntent);
finish();
}
});
successDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// .....
}
@Override
protected void onPostExecute(Void result) {
Log.i("MSG","inside post");
AlertDialog.Builder success = new AlertDialog.Builder(EditCardActivity.this);
success.setMessage("Your payment was successful");
success.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
success.show();
}
}
HINWEIS
Wenn ich diesen Code auszuführen habe ich versucht, „E/UncaughtException war immer: android.view.WindowManager $ BadTokenException: Kann nicht hinzufügen Fenster - Token [email protected] ist nicht gültig; läuft Ihre Aktivität? "
So gegoogelt ich und fand
if(!isFinishing()) {success.show();}
aber es hat nicht geholfen, wenn ich isFinishing angemeldet() es gedruckt als true.This Frage Duplikat sein kann, ich habe viele Q/A ähnlich wie diese Ausnahme gesehen . Ich habe das meiste ausprobiert. Nicht sicher, was ich vermisse. Ich bin hier geschlagen. Jeder Vorschlag oder andere Vorgehensweise wäre hilfreich. Vielen Dank!
bekommen java.lang.InterruptedException zeigt – irigs
Anfangs habe ich versucht zu geben Der Toast anstelle des Dialogfelds "Warnung" (onPostExecute) wird in der aktuellen Ansicht angezeigt. Aber immer das Dialogfeld Warnung schlägt mit dieser Ausnahme fehl "E/UncaughtException: android.view.WindowManager $ BadTokenException: Fenster kann nicht hinzugefügt werden - Token [email protected] ist nicht gültig; wird Ihre Aktivität ausgeführt?" – irigs