2016-12-13 1 views
0

Je suis en train d'écrire une application Android. J'ai un MainView, qui est du type MvxCachingFragmentCompatActivity, et il gère les fragments. Dans ViewModel d'un fragment, qui est actuellement affiché, j'appelle Close (this), pour montrer le fragment précédemment montré, mais rien ne se passe.MvvmCross proche fragment de ViewModel

J'utilise MvxFragmentsPresenter existant. Et pour tester, j'ai créé une copie de ce présentateur, et sous debug, vérifié que ChangePresentation, et les méthodes Close sont appelées, et CloseFragment (viewModel) est appelé, mais rien ne se passe. Et en sortie, je ne vois pas d'erreurs. Après près tenter Sorties:

[0:] MVX: Diagnostic: 34,91 Demande changement de présentation 12-13 07: 14: 01,438 D/Mono (4912): Assemblée Ref AddRef MvvmCross.Droid.Support .V7.AppCompat [0xe8017220] -> System.Core [0xdd8db900]: 26

Actuellement pour obtenir le comportement souhaité, je l'appelle simplement OnBackPressed() en vue de fragments de code derrière, mais je pense que c'est awfull :

public override void OnResume() 
{ 
    var closeButton = Activity.FindViewById<Button>(Resource.Id.close_button); 
    closeButton.Click += (s, e) => 
    { 
     Activity.OnBackPressed(); 
    }; 

    base.OnResume(); 
} 

Mais sur l'application iOS, cette méthode Close fonctionne comme prévu.

Qu'est-ce que je fais mal?

Répondre

0

Avec le bon point fait par Stupidus, le methos proche de travail ressemble à:

public override bool Close(IMvxViewModel viewModel) 
{ 
    OnBackPressed(); 
    return base.Close(viewModel); 
} 
2

Pour rendre le travail de la fonction Fermer pour moi, j'ai dû passer outre la méthode Close dans MvxCachingFragmentCompatActivity à ceci:

public override bool Close(IMvxViewModel viewModel) 
    { 
     CloseFragment(viewModel.GetType().Name, Resource.Id.content_frame); 
     Finish(); 
     return true; 
    } 
+0

Merci pour votre réponse! Malheureusement, cela ne convient pas dans mon cas. Finish() ferme l'activité, mais je veux seulement fermer le fragment. Et CloseFragment ne le ferme pas. Mais vous m'avez aidé à trouver une solution plus concise. – Fragment