2016-03-20 17 views
5

Çerçeve düzeninde parçaları barındıran bir Etkinliğim var. Gösterilen parçayı bir diğerine değiştirirsem, parça arka yığına eklenmez ve bu nedenle "Geri" -düğmesinin kullanımı hemen geri gitmek yerine uygulamayı hemen kapatacaktır (FragmentManager.BackStackEntryCount her zaman OnBackPress'de 0'dır).()-geri aramak). fragmanları barındıran "MainActivity" bir ViewModel MvvmCross 4.0'daki backstack'e nasıl parça eklenir?

I ShowViewModel ile fragmanını gösteren <> kullanılan yöntem:

public class MainViewModel : MvxViewModel 
{ 
    public IMvxCommand ShowHomeCommand 
    { 
     get { return new MvxCommand(ShowHomeExecuted); } 
    } 

    private void ShowHomeExecuted() 
    { 
     ShowViewModel<HomeViewModel>(); 
    } 
} 

fragmanı sınıfı, bir host için ViewModel atamak için bir ek açıklaması etkinlik:

protected override IMvxAndroidViewPresenter CreateViewPresenter() 
{ 
    var mvxFragmentsPresenter = new MvxFragmentsPresenter(AndroidViewAssemblies); 
    Mvx.RegisterSingleton<IMvxAndroidViewPresenter>(mvxFragmentsPresenter); 
    return mvxFragmentsPresenter; 
} 
:

[MvxFragment(typeof(MainViewModel), Resource.Id.fragment_container)] 
[Register("namespace.of.HomeFragment")] 

benim Kur-sınıfında varsayılan AndroidViewPresenter kullanmak 10

MvxFragment-Attribut veya MvxFragment sınıfında "AddToBackstack" veya benzeri bir parametre bekleniyor ancak böyle bir şey yok. Bir şeyi özlüyor muyum yoksa şu anda MvvmCross 4.0'daki yeni parça mekanizmasında arka yığına destek yok mu? Navigasyon gerçekleşmeden önce

public override void OnBeforeFragmentChanging (IMvxCachedFragmentInfo fragmentInfo, Android.Support.V4.App.FragmentTransaction transaction) 
     { 
      var currentFrag = SupportFragmentManager.FindFragmentById (Resource.Id.content_frame) as MvxFragment; 

      if(currentFrag != null 
       && fragmentInfo.ViewModelType != typeof(MenuViewModel) 
       && currentFrag.FindAssociatedViewModelType() != fragmentInfo.ViewModelType) 
       fragmentInfo.AddToBackStack = true; 
      base.OnBeforeFragmentChanging (fragmentInfo, transaction); 
     } 

Bu backstack için fragman katacak: Ne yapabilirsiniz

cevap

5

senin MainActivity böyle bir şey eklemektir.

0

Ben Bu kesinlikle v4.2.3

çalışır

[MvxFragment(typeof(MainViewModel), Resource.Id.fragment_container, AddToBackStack = true)] 
[Register("namespace.of.HomeFragment")] 

için fragmanındakı özelliklerini değiştirmek kadar basit olduğunu düşünüyorum

İlgili konular