Метод init не вызывается в модели представления фрагмента.

У меня есть фрагмент, где в методе init я пытаюсь показать некоторые данные, но это не получается.

  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();
            }

      }
    }

У меня есть три фрагмента в моем проекте.

  namespace MoneyCare.Core.ViewModels
    {
        public class FirstViewModel: MvxViewModel
        {
            Friend _friend;


            public List<Friend> AllFriends { get; set; }

            public string FriendUserName
            {
                get { return _friend.FriendUserName; }
                set
                {
                    _friend.FriendUserName = value;
                    RaisePropertyChanged(() => FriendUserName);
                }
            }


            public void Init()
           {
              Task<List<Friend>> result = Mvx.Resolve<Repository>().getFriendsList();
              result.Wait();
                AllFriends = result.Result;
           }

            public ICommand check
            {
                get
                {
                    return new MvxCommand(() =>
                    {

                        //Task<List<Friend>> result = Mvx.Resolve<Repository>().getFriendsList();
                        //result.Wait();
                        //AllFriends = result.Result;
                        ShowViewModel<CheckViewModel>();


                    });
                }
            }


            //Opens Add Friends Activity
            public ICommand OpenAddFriend
            {
                get
                {

                    return new MvxCommand(() => ShowViewModel<AddFriendViewModel>());
                }
            }


        }
    }

Я попробовал то же самое с Activity, для активности checkview он работает, но не для Fragment.

1 ответ

Решение

ViewModelЖизненные циклы не выполняются, потому что вы не загружаете их с помощью MvvmCross, вы просто создаете их, как обычные классы.NET. Только конструктор будет работать на самом деле. Если ты хочешь Init чтобы выполнить, вам нужно загрузить ViewModel с MvvmCross, что обычно делается путем перехода к нему с помощью ShowViewModel<YourViewModel>,

Фрагменты, содержащиеся в действиях в Android, не означают, что ваши ViewModels должны быть детьми вашего HomeViewModel, призвание ShowViewModel<FirstViewModel> будет гарантировать, что FirstViewModel"s Initпожары.

Другие вопросы по тегам