Je viens de développer ma première application xamarin.forms. Je suis enthousiasmé par xamarin.forms, mais je manque plusieurs événements.
Existe-t-il des événements de cycle de vie de page dans une page de contenu xamarin.forms?
Je connais ces deux:
protected override void OnAppearing()
{
}
protected override void OnDisappearing()
{
}
Mais l'événement OnAppearing () ne se déclenche qu'une seule fois. Sur Android, lorsque j'appuie sur le bouton Démarrer et reviens à mon application, cet événement ne se déclenche plus.
Existe-t-il une solution de contournement pour cela (comme OnNavigatedTo dans les pages WindowsPhone)?
Merci.
Ainsi, l'événement OnAppearing
est déclenché lorsque votre page apparaît. C'est à dire. vous avez accédé à cette page ou revenez à cette page à partir d'une autre dans la pile. Il n'y a actuellement pas de Page Lifecycle
événements comme vous pouvez le voir dans la documentation API
Je pense que ce dont vous parlez, c'est que si vous mettez votre application en veille et y revenez, l'événement OnAppearing
n'est pas déclenché, c'est parce que votre page n'est pas apparue parce qu'elle était déjà là, l'application juste endormi.
Ce que vous recherchez est le App Lifecycle
qui inclut des méthodes telles que:
protected override void OnStart()
{
Debug.WriteLine ("OnStart");
}
protected override void OnSleep()
{
Debug.WriteLine ("OnSleep");
}
protected override void OnResume()
{
Debug.WriteLine ("OnResume");
}
Vous pouvez ensuite utiliser l'événement OnResume
pour faire ce que vous recherchez.
Ce document Xamarin inclut les modifications qui doivent être apportées aux anciens projets Xamarin pour accéder à ces événements. par exemple. votre classe App
dans votre bibliothèque partagée doit hériter de Xamarin.Forms.Application
et des modifications doivent également être apportées aux AppDelegate
et MainActivity
.
Vous pouvez également utiliser MessagingCenter de Xamarin pour effectuer une coordination arbitraire des événements: http://developer.xamarin.com/guides/cross-platform/xamarin-forms/messaging-center/
J'ai été frustré par la même chose: ne pas avoir de vue cohérente voir les événements du cycle de vie dans Xamarin.Forms. Mais vous pouvez contourner certaines de ces contraintes en utilisant le MessagingCenter, qui n'est qu'une simple installation de messagerie pub/sub.
Cela fonctionne pour moi. Xamarin.Forms 2.0 et supérieur. Chaque fois que vous revenez à cette page CP
, l'événement Appearing
est déclenché.
public CP:ContentPage
{
//....
public CP()
{
this.Appearing += CP_Appearing ;
//...
}
private void CP_Appearing(object sender, EventArgs e)
{
Debug.WriteLine("*************HALLO******WELCOME BACK.");
}
}