Activity starten und danach die MainActivity nochmal starten

  • Antworten:16
Jakob N.
  • Forum-Beiträge: 282

19.08.2014, 14:28:58 via Website

Hallo :)

Mein Titel ist leider nicht sehr aussagekräftig, da ich keine passenden Wörter fand.

Mein Problem ist folgendes: In meiner App kann man sich einloggen, dabei wird in den SharedPreferences eine Boolean-Variabel auf true (angemeldet) bzw. false (nicht angemeldet) gesetzt. In meiner MainActivity überprüfe ich vor dem laden eines bestimmten Fragements (habe einen NavigationDrawer) ob dieser Login-Status auf true ist. Falls dieser nicht auf true ist, starte ich die Login-Activity. Wenn dort das anmelden erfolgreich war, möchte ich in der MainActivity, gleich das Fragment starten.

Die MainActivity ist die Start-Activity und ich möchte dass sie nur einmal offen ist.

Was noch zu erwähnen ist, ist vielliecht dass ich in der MainActivity im onDestroy den Login-Status wieder auf false setze.

Bitte um Eure Hilfe :)

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.08.2014, 16:38:03 via App

Ich würde einfach nach den erfilgreichen Login mit finish() die Loginactivity beenden und in der Main Weitermachen.
Sonst einfach erste Main beenden und neues Main intent machen indem du aber den Loginstatus per extras übergibst damit du in keiner Endlosschleife hängenbleibst.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jakob N.
  • Forum-Beiträge: 282

19.08.2014, 17:16:16 via Website

Wie kann ich dann bei finish() dem Main sagen, dass es noch das eine Fragment laden soll?

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.08.2014, 17:46:18 via Website

Lade das Fragment doch gleich am Anfang und zeige das Fragment aber erst an, wenn der Login erfolgreich war, ich habe genau das gleiche in meiner App nur ohne Fragment. Ich mache nach dem Login einfach eine neue MainActivity per intent auf, da mein LoginFlag ja "true" ist wird der Login nicht mehr angefordert.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jakob N.
  • Forum-Beiträge: 282

19.08.2014, 20:55:53 via App

Du machst dann aber eine andere Variante als die mit finish oder?

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.08.2014, 21:08:11 via App

Ja ich benutze due 2. Möglichkeit aus meinem Voherigen Post.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jakob N.
  • Forum-Beiträge: 282

19.08.2014, 21:17:13 via App

Setzt du dein Login-Flag irgendwann auf false?

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.08.2014, 21:19:54 via Website

Nein, es wird nur auf false gesetzt wenn man sich als anderen User anmelden will oder der aktuelle User sich ausloggt.
Warum sollte es auch auf false gesetzt werden, bei mir ist die Session weniger wichtig, als dass der User die Benutzerdaten kennt (dass er berechtigt ist die App zu nutzen)

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jakob N.
  • Forum-Beiträge: 282

19.08.2014, 21:52:09 via App

Naja ich möchte es gerne auf false setzen, da ich den Benutzer eben für bestimmte Sachen explizit authentifizieren soll. Das Problem is nur dass wenn ich einen neuen Intent starte, das login wieder auf false gesetzt wird. (onDestroy = loginflag auf false)

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.08.2014, 22:15:21 via Website

Deswegen musst du ein LoginFlag im Intent das du startest noch einmal mitgeben als Intent Extra, dann kannst du aus der LoginActivity das Flag wieder richtig setzen und dann das richtige Fragment ansteuern.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jakob N.
  • Forum-Beiträge: 282

19.08.2014, 22:18:04 via App

Sorry aber ich versteh jetzt nicht genau was du meinst.

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.08.2014, 22:33:53 via Website

LoginActivity-> macht ein Intent der Mein Auf und übergibt das Login flag
MainActivity -> Prüft ob das Intent von der Login Activity kommt und verarbetet das übergebene Flag entsprechend

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jakob N.
  • Forum-Beiträge: 282

19.08.2014, 23:15:52 via App

Und wie sollte so ein Flag ausschauen?

LG Jakob

LG Jakob

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

20.08.2014, 07:03:10 via App

Das kannst du ganz frei entscheiden ist je deine App und dein Login.

— geändert am 20.08.2014, 07:03:20

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jakob N.
  • Forum-Beiträge: 282

20.08.2014, 12:27:13 via App

Aber auch wenn ich das Flag mitgebe bleibt in den shared preferences dann der loginstatus auf false oder? (wird ja dann im onDestroy auf false gesetzt)

LG Jakob

LG Jakob

Antworten
Jakob N.
  • Forum-Beiträge: 282

20.08.2014, 15:58:15 via Website

Wenn man selbst ein Flag macht, gibt man dem irgendeine Integer Zahl z.B.: 1? Und wie kann man dann überprüfen ob die Activity das Flag mitbekommen hat?

LG Jakob

LG Jakob

Antworten
Jakob N.
  • Forum-Beiträge: 282

20.08.2014, 16:37:44 via Website

Gut die Frage ist hinfällig, ich habe es jetzt anders gelöst.

Aber eine andere Frage, kann man aus einem Intent auslesen, welche Klasse es erzeugt hat oder so ähnlich? Damit ich in der MainActivity in der Methode onNewIntent(Intent intent) schauen kann, ob dieses intent von der LoginActivity kommt.

LG Jakob

Antworten