我正在尝试将 TabActivity 与 MvvmCross 一起使用,但我在框架代码中收到 NullReferenceException,因为传入 OnViewCreate 的 viewModelLoader 为 null
namespace Cirrious.MvvmCross.ExtensionMethods
{
public static class MvxViewExtensionMethods
{
public static void OnViewCreate<TViewModel>(this IMvxView<TViewModel> view, Func<TViewModel> viewModelLoader)
where TViewModel : class, IMvxViewModel
{
if (view.ViewModel != null)
return;
var viewModel = viewModelLoader();
viewModel.RegisterView(view);
view.ViewModel = (TViewModel)viewModel;
}
我怀疑这是因为我试图直接加载视图而不是通过 ViewModel。我的 TabHost Activity 中的代码如下所示:
[Activity(Label = "TabHost")]
public class TabHostView : MvxBindingTabActivityView<TabHostViewModel>
{
protected override void OnViewModelSet()
{
SetContentView(Resource.Layout.Page_TabHostView);
var tabHostWidget = this.TabHost;
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent(this, typeof(HomeView));
intent.AddFlags(ActivityFlags.NewTask);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHostWidget.NewTabSpec("home");
spec.SetIndicator("Home", Resources.GetDrawable(Resource.Drawable.icon_home));
spec.SetContent(intent);
tabHostWidget.AddTab(spec);
//... more tabs
我将如何解决这个问题?
此外,我的 ViewModel 已设置为 TabHostViewModel 具有每个标签页 ViewModel 的属性。这些是惰性的,因为它们仅在调用属性的 get 访问器时从模型中获取数据。
因此,如果我的标签页 axml 布局中有数据绑定,大概路径必须假定 TabHostViewModel 是上下文(根)?
非常感谢,杰森