MvxCachingFragmentStatePagerAdapter和app Backgrounding导致null ViewModel

时间:2017-02-24 11:26:06

标签: c# xamarin xamarin.android mvvmcross

重现的步骤

在GitHub上使用样本MvvmCross-Samples / XPlatformMenus /

将应用部署到Android设备,最多将

设置为限制后台进程设置为1

运行应用程序,从菜单中选择View Pager示例

将应用程序发送到后台,加载其他应用程序,然后再次返回该应用程序以确保其已被落后

预期行为

我希望View Pager片段会重新出现在背景之前选中的标签上

实际行为

由于RecyclerViewFragment.OnCreateView中的以下代码,返回了空引用错误:

_itemSelectedToken = ViewModel.WeakSubscribe(() => ViewModel.SelectedItem,
(sender, args) =>
{
    if (ViewModel.SelectedItem != null)
        Toast.MakeText(Activity,
        string.Format("Selected: {0}", ViewModel.SelectedItem.Title),
        ToastLength.Short).Show();
});

问题是ViewModel尚未恢复且为空。

我遇到此问题的原因是我在自己的应用程序中使用MvxCachingFragmentStatePagerAdapter,而不是使用ViewModel类型初始化FragmentInfo:

new MvxCachingFragmentStatePagerAdapter.FragmentInfo("RecyclerView 1", typeof(RecyclerViewFragment), typeof(RecyclerViewModel))

我为每个FragmentInfo使用相同的模型:

new MvxCachingFragmentStatePagerAdapter.FragmentInfo("RecyclerView 1", typeof(RecyclerViewFragment), ViewModel)

这会导致相同的行为 - 应用程序从后台恢复时的null ViewModel

我正在使用MvvmCross 4.4和Android 7.0

0 个答案:

没有答案