防止在Android(和MVVMCross)中自动恢复片段状态

防止在Android(和MVVMCross)中自动恢复片段状态,android,android-fragments,mvvmcross,Android,Android Fragments,Mvvmcross,当片段重新打开时,Android会自动恢复片段的状态,并为任何指定了Android:id的可编辑视图设置值。使用MVVMCross时,这会导致前一个状态为当前视图中的绑定设置源值。例如,如果我为Book_a打开一个编辑片段(它有一个ID为的BookTitle的EditText)并关闭该片段,打开片段编辑Book_B时,Book_B的BookTitle源值会自动更新为Book_B的最后一个EditText值。这是因为Android自动恢复了状态 有没有办法阻止Android进行自动状态恢复?如果您

当片段重新打开时,Android会自动恢复片段的状态,并为任何指定了
Android:id
的可编辑视图设置值。使用MVVMCross时,这会导致前一个状态为当前视图中的绑定设置源值。例如,如果我为Book_a打开一个编辑片段(它有一个ID为的
BookTitle
EditText
)并关闭该片段,打开片段编辑Book_B时,Book_B的
BookTitle
源值会自动更新为Book_B的最后一个
EditText
值。这是因为Android自动恢复了状态

有没有办法阻止Android进行自动状态恢复?

如果您正在使用或通过支持库v7,您可以覆盖
ShowFragment
,并在每次显示时强制重新创建片段

protected override void ShowFragment(
    string tag, 
    int contentId, 
    Bundle bundle, 
    bool forceAddToBackStack = false, 
    bool forceReplaceFragment = false)
{
    base.ShowFragment(tag, contentId, bundle, forceAddToBackStack, true);
}
如果您通过支持库v7使用or,则可以重写
ShowFragment
,并在每次显示片段时强制重新创建该片段

protected override void ShowFragment(
    string tag, 
    int contentId, 
    Bundle bundle, 
    bool forceAddToBackStack = false, 
    bool forceReplaceFragment = false)
{
    base.ShowFragment(tag, contentId, bundle, forceAddToBackStack, true);
}