Привет всем после открытия PageRenderer (Xamarin.Auth) Аутентификация, сохранение данных локально и на бэкэнд Я хочу закрыть текущую активность и открыть регистрационную форму или страницу с использованием информации от Fb, Twitter или Gmail. его легко получить эту информацию, поскольку она была локально сохранена с помощью SQLite, но моя проблема заключается в закрытии текущей страницы и открытии новой страницы (Activity), так как моя страница регистрации находится в PCL (Views) Im, использующем MVVMLight. Xamarin.Auth PageRenderer перенаправить на страницу в PCL после аутентификации пользователя
0
A
ответ
0
На Android я использовал MessagingCenter
, чтобы выскочить из модальной страницы входа, которую я использовал, чтобы показать веб-интерфейс входа в систему Xamarin Auth. Так это будет выглядеть следующим образом (обратите внимание, что я показываю мой LoginPage
как модальные):
ContentPage:
public class LoginPage : ContentPage {
public LoginPage() { }
protected override async void OnAppearing() {
base.OnAppearing();
MessagingCenter.Unsubscribe<string>(this, "LoginPageDone");
MessagingCenter.Subscribe<string>(this, "LoginPageDone", async errorMessage => await Navigation.PopModalAsync());
}
protected override void OnDisappearing() {
base.OnDisappearing();
MessagingCenter.Unsubscribe<string>(this, "LoginPageDone");
}
}
ИН моей LoginPage видеообработки:
public class LoginPageRenderer : Xamarin.Forms.Platform.Android.PageRenderer {
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.Page> e) {
base.OnElementChanged(e);
if(e.OldElement != null || Element == null) { return; }
LoginPage page = (LoginPage)Element;
Xamarin.Auth.OAuth2Authenticator auth = new Xamarin.Auth.OAuth2Authenticator();
auth.Completed += async (sender, eventArgs) => {
//Do some eventArgs.IsAuthenticated stuff
Xamarin.Forms.MessagingCenter.Send("something", "LoginPageDone"); //Call the event to pop the page
}
}
}
Просто для полноты картины, на прошивке , вместо вызова события "LoginPageDone"
я вызываю DismissViewController(true, null);
с auth.Completed
.
эй спасибо, что посмотрел на мое сообщение, но мой redenerer не работает, когда я добавляю это –
if (e.OldElement! = Null || Element == null) {return; } LoginPage page = (LoginPage) Элемент; –
@jaketalledo Что с этим не работает? – hvaughan3