2016-05-12 11 views
1

Ich habe ein Projekt basierend auf der XPlatformMenus MvvmCross Probe. Die App verwendet eine von MvxCachingFragmentCompatActivity geerbte Aktivität. Die App verwendet eine gleitende Schublade NavigationView, um die Navigation zu verschiedenen Fragmenten zu ermöglichen, die zur Laufzeit ausgelagert werden.MvxCachingFragmentCompatActivity refresh cached Fragment

Ich habe ein Fragment, das eine Liste mit RecyclerView anzeigt. Ich kann bis zum Ende der Liste scrollen, die Zurück-Taste drücken, dann das Fragment erneut aus dem Navigationsmenü aufrufen, und das Fragment wird genau so angezeigt, wie es war (mit der gescrollten Position am Ende der Liste). Wie kann ich es so machen, dass das Fragment immer so startet, als wäre es zum ersten Mal erstellt worden, nachdem ich ShowViewModel<TViewModel> aufgerufen habe? Ich denke, ich möchte nicht, dass dieses spezifische Fragment zwischengespeichert wird, oder ich möchte irgendeine Art von Ereignis haben, das ich einbinden kann, um das ViewModel zurückzusetzen, wenn das Fragment erneut angezeigt wird. Wie kann dieses Problem gelöst werden?

Antwort

2

ich dies noch nicht getestet haben, scheint aber bei MvxCachingFragmentCompatActivity dort suchen virtuelle Methode, um Sie

protected override void ShowFragment(
    string tag, 
    int contentId, 
    Bundle bundle, 
    bool forceAddToBackStack = false, 
    bool forceReplaceFragment = false) 

Der forceReplaceFragment Parameter wie kommentiert wird außer Kraft setzen können:

Wenn Sie das Fragment neu erstellt werden.

Vielleicht so etwas wie:

protected override void ShowFragment(
    string tag, 
    int contentId, 
    Bundle bundle, 
    bool forceAddToBackStack = false, 
    bool forceReplaceFragment = false) 
{ 
    if (tag.Equals(typeof(<<VIEW_MODEL_TYPE>>).FullName)) 
     forceReplaceFragment = true; 

    base.ShowFragment(tag, contentId, bundle, forceAddToBackStack, forceReplaceFragment); 
}