Ho un'attività che ospita frammenti in un frame-layout. Se cambio il frammento visualizzato in un altro, il frammento non viene aggiunto al back-stack e quindi l'uso del pulsante "Indietro" chiuderà immediatamente l'app anziché tornare indietro (FragmentManager.BackStackEntryCount è sempre 0 in OnBackPressed()-richiama).Come aggiungere un frammento al backstack in MvvmCross 4.0?
Nel ViewModel del "MainActivity" che ospita i frammenti che mostrano il frammento tramite lo ShowViewModel <> -method:
public class MainViewModel : MvxViewModel
{
public IMvxCommand ShowHomeCommand
{
get { return new MvxCommand(ShowHomeExecuted); }
}
private void ShowHomeExecuted()
{
ShowViewModel<HomeViewModel>();
}
}
Il frammento-classe ha un'annotazione per assegnare il ViewModel ad un host- attività:
[MvxFragment(typeof(MainViewModel), Resource.Id.fragment_container)]
[Register("namespace.of.HomeFragment")]
io uso il default AndroidViewPresenter nel mio Setup-classe:
protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
var mvxFragmentsPresenter = new MvxFragmentsPresenter(AndroidViewAssemblies);
Mvx.RegisterSingleton<IMvxAndroidViewPresenter>(mvxFragmentsPresenter);
return mvxFragmentsPresenter;
}
Mi aspettavo un parametro "AddToBackstack" o simile nel MvxFragment-Attribut o nella classe MvxFragment ma non c'è nulla di simile. Mi manca qualcosa o al momento non c'è alcun supporto per lo stack nel nuovo meccanismo dei frammenti in MvvmCross 4.0?