Próbuję utworzyć schludny rozwiązanie dla następującej sytuacji:Xamarin MvvmCross Android Prevent Powrót Przycisk powrotu do poprzedniego widoku
ja już zbudować aplikację, która wymaga poświadczeń w celu uwierzytelnienia użytkownika. Ilekroć API chce ponownie uwierzytelnić użytkownika, chciałbym zmusić użytkownika do powrotu do widoku logowania. Ta funkcja działa świetnie, ale gdy użytkownik naciśnie przycisk Wstecz na urządzeniu, wyświetlany jest poprzedni widok. Chciałbym zobaczyć, że gdy użytkownik naciśnie przycisk Wstecz, aplikacja wychodzi.
MvvmCross ma opcję użycia MvxPresentationHint. I stworzył CustomAndroidViewPresenter i stworzył następującą MvxAndroidSetup:
public class Setup : MvxAndroidSetup
{
private CustomAndroidViewPresenter _presenter;
public Setup(Context applicationContext)
: base(applicationContext)
{
_presenter = new CustomAndroidViewPresenter(applicationContext);
}
protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
Mvx.RegisterSingleton(_presenter);
return _presenter;
}
}
wiem, że należy zadzwonić Finish(); na działanie, które uniemożliwi powrót plecaka do nieuwierzytelnionego widoku. Ale rzutowanie applicationContext wywołuje wyjątek.
public CustomAndroidViewPresenter(Context context)
{
_context = context;
}
public override void ChangePresentation(MvxPresentationHint hint)
{
if (hint is LoginOnlyBackStackHint)
{
var context = Application.Context;
if (context is Activity)
{
// Context is NOT activity
}
try
{
Activity x = (Activity) context;
x.Finish();
// Exception is thrown
}
catch (Exception ex)
{
}
}
base.ChangePresentation(hint);
}
Czy ktoś ma jakieś pomysły, jak to osiągnąć?
Wielkie dzięki z góry.
Dzięki za odpowiedź! Zajrzę do niego i przekażę moją opinię – JonHendrix
To zadziałało! Oznaczone jako odpowiedź - dzięki! – JonHendrix