2017-06-17 2 views
0

Je voudrais ajouter la gestion personnalisée de la méthode OnBackPressed dans Xamarin Android avec le framework MvvmCross. J'ai essayé quelque chose comme ceci:Gestion personnalisée d'OnBackPressed MvvmCross - ne fermez pas l'application

[Activity(Label = "Table", NoHistory = true)] 
public class Table: MvxActivity 
{ 
    protected override void OnCreate(Bundle bundle) 
    {   
      base.OnCreate(bundle); 
      SetContentView(Resource.Layout.View_Table);     
    } 

    public override void OnBackPressed() 
    { 
     //base.OnBackPressed(); 
     SetContentView(Resource.Layout.View_MainMenu); 
    } 
} 

et l'application allé à MainMenuView mais un seul bouton (qui dirige vers TableView) à l'intérieur ce point de vue a été désactivé. J'ai essayé avec quelque chose comme:

protected override void OnResume() 
{ 
     SetContentView(Resource.Layout.View_MainMenu); 
} 

dans MainMenuView mais il ne fonctionne pas. Devrais-je ajouter du code dans ViewModels plutôt que dans Views? Ou lier en quelque sorte les événements dans une mise en page? S'il est possible de gérer ce genre de comportement, comment y parvenir? Vous n'utilisez pas les fonctionnalités de MvvmCross si vous écrivez votre code de la manière suivante:

+0

Qu'est-ce qui ne fonctionne pas? Utilisez-vous les boutons physiques de retour ou ceux de la barre de navigation? Il est vraiment difficile de vous aider lorsque le comportement et le problème prévus ne sont pas clairement définis. – Demitrian

+0

J'utilise le bouton de retour physique. Le scénario est simple. J'ai MainMenuView avec un bouton, qui dirige vers TableView. Dans TableView, je veux mettre en œuvre un tel comportement qu'après avoir appuyé sur l'application du bouton physique ne sera pas fermé, mais ira à MainMenuView ou précédemment affiché Voir –

Répondre

1

Supprimez simplement "History = true", supprimez vos gestionnaires OnBackPressed() et OnResume() et MvvmCross s'occupera de votre retour à MainMenu comme prévu. Lorsque vous utilisez MvvmCross, vous devez utiliser vos ViewModels et non vos Vues pour naviguer (au moins, dans un scénario classique) en utilisant MvvmCross.

+0

Ok, cela fonctionne. Je vous remercie. –

+0

@BartoszJasiewicz Bien! Pouvez-vous juste mettre cette réponse comme "acceptée"? Je vous remercie! – hugoterelle

+1

Bien sûr que c'est fait! –