2014-01-03 2 views
1

У меня возникла проблема, когда я пытаюсь вручную убрать фрагменты в режиме просмотра во время вращения. Все, кажется, работает хорошо, когда я повернуть фрагмент, как только мой ViewModel был заселен, я все это:Mvvmcross Android - просмотр вращающегося фрагмента во время просмотра среды просмотра

this.viewmodel = Foo

, но если я пытаюсь повернуть фрагмент во время популяции (например, из Интернета сервис), а затем повторно подключить сохраненную модель просмотра до того, как население завершило представление, похоже, не связано должным образом.

Я знаю, что есть недостаток источника (в этом сообщении), но мне было интересно, должно ли это работать в принципе, и если есть способ исправить проблему привязки (существует контекст привязки и т. Д.), Если это действительно проблема?

Если я снова поверну фрагмент после популяции, вид будет заполнен как обычно.

+0

Вы реагируете на изменения конфигурации в активности, в которой размещен фрагмент? – Alexey

+0

Да, я использую OnSavedInstanceState и OnCreateView для хранения текущей модели. – monkeychew

ответ

0

Я думаю, что у меня может быть первоначальное решение проблемы, с которой я столкнулся. Я использовал следующий код для запуска кода.

TypedViewModel.PopulateAndRun(() => 
{ 
    DoSomething(); 
}); 

Проблема, казалось, что это действие было только раз, и что, возможно, действие, которое увольняют было для старого взгляда и не новый вид.

Я попытался добавить следующий код в дополнении к указанной выше коде, и он работал

TypedViewModel.OnPopulated +=() 
{ 
    DoSomething(); 
}); 
0

Одним из вариантов решения этой проблемы является инструктировать Android не воссоздавать активности, когда изменений конфигурации. Убедитесь, что у вас есть «ConfigurationChanges», определенный в атрибуте активности, и вы переопределите OnConfigurationChanged.

 
    [Activity(
     Label = "Sample", 
     ConfigurationChanges = global::Android.Content.PM.ConfigChanges.Orientation | global::Android.Content.PM.ConfigChanges.ScreenSize | global::Android.Content.PM.ConfigChanges.KeyboardHidden 
     )] 
    public class SampleActivity : MvxFragmentActivity 
    { 
     //... 

     public override void OnConfigurationChanged(global::Android.Content.Res.Configuration newConfig) 
     { 
      base.OnConfigurationChanged(newConfig); 
     } 
    } 
Смежные вопросы