2017-05-08 1 views
0

J'ai un fragment où, dans la méthode init, j'essaie d'afficher certaines données, mais cela ne fonctionne pas.La méthode Init n'est pas appelée dans le modèle de vue Fragment

namespace MoneyCare.Core.ViewModels 
    { 
     public class HomeViewModel : MvxViewModel 
     { 

      public FirstViewModel First { get; set; } 
      public SecondViewModel Second { get; set; } 
      public ThirdViewModel Third { get; set; } 

      public HomeViewModel() 
      { 
       First = new FirstViewModel(); 
       Second = new SecondViewModel(); 
       Third = new ThirdViewModel(); 
      } 

     } 
    } 

J'ai trois fragments dans mon projet. J'ai essayé la même chose avec Activité, Pour l'activité checkview, elle fonctionne mais pas pour Fragment.

Répondre

1

Les cycles de vie de ViewModel ne sont pas en cours d'exécution parce que vous n'êtes pas chargement les avec MvvmCross, vous êtes juste de les construire comme vous le feriez des classes .NET ordinaires. Seul le constructeur va réellement fonctionner. Si vous voulez que Init s'exécute, vous devez charger le ViewModel avec MvvmCross, ce qui est généralement fait en naviguant avec ShowViewModel<YourViewModel>.

Les fragments contenus dans les activités d'Android ne signifient pas que vos ViewModels doivent être des enfants de votre HomeViewModel. L'appel ShowViewModel<FirstViewModel> assurera que FirstViewModelInit tire.

+0

Comment appeler ShowViewModel depuis HomeViewModel? Dans une méthode Init de HomeViewModel? –

+1

Non - vous ne devez pas quitter un ViewModel pendant 'Init'. Si 'HomeViewModel' est le ViewModel de l'activité qui contient le fragment auquel' FirstViewModel' est lié, naviguez vers 'FirstViewModel' _au lieu de' 'HomeViewModel'. Assurez-vous qu'Android charge l'activité pour le fragment en utilisant l'attribut 'MvxFragment' comme dans l'exemple [this] (http://stackoverflow.com/questions/40287483/mvvmcross-fragments-resolving). –

+0

Pouvez-vous donner un exemple de code? –