在TabHost中添加选项卡时ViewModel数据丢失

时间:2012-12-11 11:35:23

标签: xamarin.android mvvmcross

我正在尝试使用Cirrious Conference示例创建标签视图,但似乎在显示我的数据时出现问题。如果在下面的代码中专门调用托管选项卡的视图,则会出现问题

// Initialize a TabSpec for each tab and add it to the TabHost spec = TabHost.NewTabSpec("welcome"); spec.SetIndicator(this.GetText("Welcome"),Resources.GetDrawable(Resource.Drawable.Tab_Welcome)); spec.SetContent(CreateIntentFor(ViewModel.Welcome)); TabHost.AddTab(spec);

我的ViewModel calss位于

之下
public class WelcomeViewModel : MvxViewModel
{
    private string _description;
    public string Description
    {
        get
        {
            return _description;
        }
        set
        {
            _description = value;
            FirePropertyChanged("Description");
        }
    }

    public WelcomeViewModel(string description)
    {
       Description = description;
    }

    public WelcomeViewModel()
    {

    }
}

创建ViewModel.Welcome对象并使用传递给它的数据进行初始化,直到控件通过SetContent方法,但是当调用AddTab时,似乎再次调用WelcomeViewModel构造函数并重置数据。调用堆栈将此跟踪到

base.OnCreate(bundle);

调用BaseTabbedView类。如何保持WelcomeViewModel中的数据,以便它显示在我的选项卡中,非常感谢

1 个答案:

答案 0 :(得分:0)

我有一种感觉这可能是我几周前修复的错误。

错误是用于存储这些子视图模型的缓存开始在0处开始索引 - 并且0也被Android Intent视为空值。


在vnext中,请参阅此检查https://github.com/slodge/MvvmCross/commit/bcebadffee3850857d6a73070704e72b3aa72bcb

在掌握中,请参阅https://github.com/slodge/MvvmCross/commit/c3171e27168bf2b7e48dd73d105f5a08870cec5a