Abfrage, ob Appstart oder onBackPressed Methode

  • Antworten:5
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 18

26.11.2020, 11:50:56 via Website

Hallo Leute,

ich brauche wieder einmal eure Hilfe.

Es geht darum, dass bei meinem Appstart ein Warnhinweis kommt der wie folgt aufgerufen wird:

final AlertDialog.Builder alert = new AlertDialog.Builder(PlayerNames.this, R.style.AlertDialogStyle);
    alert.setTitle(R.string.warning_message_title);
    alert.setMessage(R.string.warning_message_start);

    //Wenn man auf Weiter druckt, schließt sich lediglich das Fenster
    alert.setPositiveButton(R.string.btn_continue, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            imageViewBackground.setVisibility(View.VISIBLE);
            black.setVisibility(View.GONE);
            linearLayout.setVisibility(View.VISIBLE);
        }
    });

    //Wenn man auf Cancel druckt, dann wird die App mit finish() geschlossen
    alert.setNegativeButton(R.string.btn_cancel, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            finish();
        }
    });
    alert.show();

Mein Problem ist jetzt:
Das ist eine Activity, in der man Namen eingeben muss/kann. Es wird dann eine Liste erstellt und durch "weiter" an die nächste Activity übergeben. Das klappt soweit auch alles wunderbar. Ich mache das mit dieser Methode (wahrscheinlich nicht perfekt, aber es funktioniert irgendwie)

private void passStringToActivity() {
    sharedpreferences = getSharedPreferences(mypreference, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedpreferences.edit();

    String[] arr = new String[myList.size()];
    arr = myList.toArray(arr);

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < arr.length; i++) {
        sb.append(arr[i]).append(",");
    }
    editor.putString(Name, sb.toString());
    editor.apply();
}

Das Problem ist aber jetzt, wenn ich auf der nächsten Activity zurück möchte, dann rufe ich das mit onBackPressed() auf.

public void onBackPressed() {
    final ProgressDialog mDialog = new ProgressDialog(MainActivity.this, R.style.AppCompatAlertDialogStyle);
    mDialog.setMessage(zitat);
    mDialog.show();

    passStringToActivity();
    Intent intent = new Intent(this, PlayerNames.class);
    intent.putExtra("PlayerNumber", String.valueOf(playerAnzahl));
    intent.putExtra("Activity", "gamelist");
    startActivity(intent);
}

Es wird auch die erste Activity wieder aufgerufen, aber jetzt kommt wieder der Warnhinweis und die zuvor eingegebenen Namen sind weg - was ja eigentlich logisch ist, da ja wieder die Liste beim ersten Aufruf erstellt wird, aber ich weiß echt nicht was man dagegen tun kann.
Habe es mit einer Boolean Abfrage - welche prüft, ob es der erste Start der app ist oder nicht - probiert, die an die nächste Activity übergeben wird und falls man zurück drückt, diesen Wert wieder zurück an die erste Activity gibt. Aber leider kommt der Wert nicht in der zweiten Activity an.
Habe es mit Intent.putExtra und setter und getter der ersten Activity versucht. Alles ohne Erfolg.

Habe es auch mit int Werten versucht. Also
int Zahl = 0 -> erster Activityaufruf. Warnhinweis soll angezeigt werden
int Zahl = 1 -> zweiter Activityaufruf. Warnhinweis soll nicht angezeigt werden und Liste soll geholt werden.

Leider alles ohne Erfolg.
Weiß jetzt echt nicht mehr weiter.

Könnt ihr mir vielleicht helfen? Benötigt ihr noch mehr Informationen?

Danke schon einmal im Voraus!

Diskutiere mit!
Beste Antwort
  • Forum-Beiträge: 3.645

26.11.2020, 12:00:11 via Website

Hallo Samsong,

du kannst das auf verschiedene Varianten lösen .

Auf Anhieb fallen mir dazu ein :

a) mit SharedPreferences
b) mit SingleTon
c) startActivity mit entsprechenden singletask Optionen
d) Broadcasts

Warum du allerdings beim onBackpressed in Activity B wiederum ein Startactivity von A aufrust,
ist mir derzeit rätselhaft.

— geändert am 26.11.2020, 12:05:01

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 18

26.11.2020, 12:13:04 via Website

Hey danke für die Antwort!

Also habe jetzt einfach das startAcitivty entfernt und es funktioniert (wird mit sharedpreferences dann gemacht). Das es so eine einfache Lösung ist, hätte ich nicht gedacht.
Vielen Dank und sorry für die dumme Frage.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 1.434

26.11.2020, 12:19:44 via Website

Hallo
Wenn du in der ersten Activity wieder bist, solltest du dort auch die werte aus den ShPrefs zurück in die Editexte lesen.
In der zweite Activity speicherst du ja auch die neuen Werte in der onBackpressed in den Prefs.
Also musst du sie auch wieder in der ersten auslesen.
Mache das in der onCreate.

Klar kann man das auch mit SingleTon oder Broadcast machen.
Du hast dich aber nun für die ShPref entscheiden also bleibe auch dabei.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 1.434

26.11.2020, 12:24:04 via Website

Also habe jetzt einfach das startAcitivty entfernt und es funktioniert (wird mit sharedpreferences dann gemacht). Das es so eine einfache Lösung ist, hätte ich nicht gedacht.
Vielen Dank und sorry für die dumme Frage

wenn du in den zweiten Activity nichts verändert hast an den Werten wird das gehen sonst nicht.
die sind dann nicht in der ersten vorhanden

— geändert am 26.11.2020, 12:34:14

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 18

26.11.2020, 12:38:39 via Website

Also habe in der zweiten sonst nichts mehr geändert und in der ersten hole ich aktuell die Werte aus den Sharedpreferences auch nicht. Bis jetzt läuft es noch. Werde einmal ein paar Tests machen.

Danke euch beiden! :)

Hilfreich?
Diskutiere mit!