Опитвам се да накарам фрагментите да работят, когато използвам MvvmCross 3.5.
Имам следния фрагмент:
public class MainView
: MvxFragment<MenuView>
{
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignored = base.OnCreateView(inflater, container, savedInstanceState);
this.EnsureBindingContextIsSet(savedInstanceState);
var view = this.BindingInflate(Resource.Layout.MainView, null);
return view;
}
}
Използвам следния код за ръчно инициализиране на ViewModel:
var loaderService = Mvx.Resolve<IMvxViewModelLoader>();
ViewModel = (T)loaderService.LoadViewModel(
new MvxViewModelRequest(typeof(T), null, null, null), null);
Това работи добре, освен когато фрагментът се възобнови, в който момент приложението се взривява с NullReferenceException
.
Сега се опитвам да използвам MvxCachingFragmentActivity
, за да се справя с жизнения цикъл на фрагментите, но не мога да намеря документация за него.
Регистрирал съм фрагментите:
RegisterFragment<MainView, MainViewModel>(typeof(MainView).Name, bundle);
и след това показва едно:
ShowFragment(typeof(MainView).Name, Resource.Id.content_frame, bundle);
Фрагментът се зарежда, но ViewModel е нула. Пропускам ли нещо очевидно?