Frage

Erstens bin ich mir nicht sicher, ob ich das überhaupt gestalterisch am besten anhebe, aber ich bin ein bisschen neu bei Android und sehr neu bei Xamarin.Forms.Mein Setup besteht aus einer Reihe von ContentPages in einer Xamarin.Forms-PCL, die alle Informationen von einem REST-Dienst verarbeiten.Dieser Dienst gewährt beim Einloggen a WorkToken an dem die Anwendung dann festhält, um weitere Vorgänge auszuführen.Ich speichere das in einem ISessionManager.

Mein Problem ist ein Workflow-Problem.Ich habe ein LoginPage dass ich dem Benutzer zeigen möchte, ob seine Sitzung beendet/fehlerhaft/was auch immer ist;Grundsätzlich möchte ich, wenn sie nicht angemeldet sind und versuchen, etwas zu tun, diese Seite auf den Stapel verschieben und sie dazu zwingen, sich anzumelden. Wenn sie gültige Anmeldeinformationen angeben, lassen Sie sie dort weitermachen, wo sie aufgehört haben.All dies geschieht größtenteils in der PCL, aber ich habe eine Android-Implementierung davon erstellt ISessionManager das wird bei jedem abgefragt ContentPageist überschrieben OnAppearing Methode.Jede Seite ruft auf ISessionManager'S CheckLogin Das wird genau das tun, und wenn sie nicht angemeldet sind, wird ein erstellt Intent und starten Sie die LoginActivity dadurch. LoginActivity umschließt im Wesentlichen nur die PCLs LoginPage.

Das Problem, auf das ich stoße, ist, dass auf diese Weise das LoginActivity wird asynchron über der aufgerufenen Seite ausgeführt.Diese aufrufende Seite befindet sich jedoch in einem fehlerhaften Zustand, da sie noch nicht ordnungsgemäß über den REST-Dienst initialisiert wurde.Ich stelle mir vor, dass es zwei mögliche Lösungen gibt.Führen Sie entweder das aus Intent synchron (was ich nicht für möglich halte) oder mein Design überdenken.Hier ist die Intent aufstellen:

var intent = new Intent(_context, typeof(LoginActivity));
intent.AddFlags(ActivityFlags.NewTask);
_context.StartActivity(intent);

Ich habe in mehreren Xamarin-Foren nach verwandten Beiträgen zu diesem Thema gesucht, aber über die grundlegenden Navigationsworkflows in Xamarin.Forms hinaus nicht viel gefunden.

Bearbeiten:Ich habe etwas Analoges zu dem gefunden, was ich hier zu tun versuche: So übergeben Sie Variablen von einem neuen Intent zurück an die Klasse, die ihn in Android erstellt hat, aber im Kontext von Xamarin.Forms.Der startActivityForResult würde mein Problem lösen, wenn es existieren würde Forms.Context, aber es scheint kein Äquivalent zu geben.

War es hilfreich?

Lösung

Warum erstellen Sie eine LoginActivity?Liegt es daran, dass Sie etwas Natives von Android verwenden müssen?

Mein erster Gedanke ist, dass Sie, nachdem Sie den Token-Status bei „OnAppearing“ überprüft haben, entscheiden können, ob Sie das Modal für die Anmeldeseite pushen möchten oder nicht. Nachdem die Benutzeranmeldung abgeschlossen und das Token gespeichert ist, können Sie das Modal öffnen und loslegen zeigt die vorherige Seite an, auf der sich der Benutzer befand.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top