2016-11-07 4 views
0

Привет всем после открытия PageRenderer (Xamarin.Auth) Аутентификация, сохранение данных локально и на бэкэнд Я хочу закрыть текущую активность и открыть регистрационную форму или страницу с использованием информации от Fb, Twitter или Gmail. его легко получить эту информацию, поскольку она была локально сохранена с помощью SQLite, но моя проблема заключается в закрытии текущей страницы и открытии новой страницы (Activity), так как моя страница регистрации находится в PCL (Views) Im, использующем MVVMLight. enter image description hereXamarin.Auth PageRenderer перенаправить на страницу в PCL после аутентификации пользователя

ответ

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.

+0

эй спасибо, что посмотрел на мое сообщение, но мой redenerer не работает, когда я добавляю это –

+0

if (e.OldElement! = Null || Element == null) {return; } LoginPage page = (LoginPage) Элемент; –

+0

@jaketalledo Что с этим не работает? – hvaughan3