【问题标题】:null object reference on data binding数据绑定上的空对象引用
【发布时间】:2019-05-11 22:25:29
【问题描述】:

我正在尝试在 MVVM android 项目上使用数据绑定。

我有一个名为LogginActivity 的登录类和LogginMV 的视图模型

使用调试器,我知道以下行会导致 Attempt to invoke virtual method 'void org.ledeme.animekeeper.databinding.ContentActivityLoginBinding.setLoginVM(org.ledeme.animekeeper.LogginMV)' on a null object reference.

这是行:

((ContentActivityLoginBinding) DataBindingUtil.setContentView(this, R.layout.activity_login))
                .setLoginVM(logginMV);

我查了一下,我知道 logginMV 不为空。

我不知道什么是空对象引用,这就是我需要帮助的原因。

【问题讨论】:

  • 在您的情况下, ((ContentActivityLoginBinding) DataBindingUtil.setContentView(this, R.layout.activity_login)) 即将为空。你必须解决这个问题。
  • @Ketan 你知道是什么原因造成的吗?上下文?布局?
  • 对不起,我没有在 Android 上工作过,但在 Java 上工作过......所以我可以确定 null 的位置,但不知道 null 的原因! :)

标签: java android mvvm data-binding


【解决方案1】:

好的,所以我不知道这是否适用于所有 Android 开发人员,但在我的布局文件夹中,每个活动有 2 个布局:一个用于横向,一个用于另一个视图。它们都以相同的方式命名(在我的情况下为 activity_login),并且它们都包含另一个布局 content_activity_login,其中包含视图的几乎所有内容。

我不得不使用content_activity_login

((ContentActivityLoginBinding) DataBindingUtil.setContentView(this, R.layout.content_activity_login))
            .setLoginVM(logginMV);

【讨论】:

  • 仅供参考,您可以将“id”字段添加到包含内容布局的父布局标签,例如android:id="@+id/included_content_activity" 然后从您拥有的原始数据绑定中引用它: ((ActivityLoginBinding) DataBindingUtil.setContentView(this, R.layout.activity_login)).IncludedContentActivity.setLoginVM(logginMV);跨度>
猜你喜欢
  • 2022-08-24
  • 2019-05-13
  • 2019-04-07
  • 2018-04-03
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
相关资源
最近更新 更多