atl*_*der 20 java data-binding android nullpointerexception android-databinding
我正在为我的Android项目使用Android Studio.当构建与奇怪的堆栈跟踪崩溃时,我遇到了一个问题,如下所示:
Error:Execution failed for task ':app:compileDevDebugJavaWithJavac'.
java.lang.RuntimeException: failure, see logs for details.
cannot generate view binders java.lang.NullPointerException
at android.databinding.tool.reflection.ModelMethod.isBoxingConversion(ModelMethod.java:155)
at android.databinding.tool.store.SetterStore.isBetterParameter(SetterStore.java:946)
at android.databinding.tool.store.SetterStore.getBestSetter(SetterStore.java:838)
Run Code Online (Sandbox Code Playgroud)
似乎数据绑定整体被破坏了.
我之前进行了重构,并在包之间移动了类.
atl*_*der 28
就我而言,在重命名和在包之间移动类时,我依赖Android Studio.但它没有对布局的XML进行校正,其中type对variable元素属性中的重构类进行了引用data.
所以我以前的类型的值指向非现有文件并构建崩溃.
这是一个简单的错误,但可能需要更多时间才能找到来源.希望这会对某人有所帮助.
hid*_*s02 12
对我来说,这是在将 Android Studio 更新到 3.5.2 版本后开始发生的
为了修复它,我降级了 Android Gradle Plugin
buildscript {
repositories {
//..........
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
//......
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
如果这个问题仍然相关。对我来说,我认为在我的 xml 布局文件中,我包含一个类(而不是一个类的实例)作为变量,即我有这段代码
<variable
name="Converters"
type="com.example.flexapp.utils.Converters" />
Run Code Online (Sandbox Code Playgroud)
本来应该是
<import type="com.example.flexapp.utils.Converters"/>
Run Code Online (Sandbox Code Playgroud)
因为这是一个类而不是一个对象。
确保导入您在xml绑定中引用的所有类
我有类似的代码:
android:visible="@{obj instanceof A}"
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的错误。
事实证明该类A不是最重要的。添加<import type="com.company.A">标签解决了该问题。
PS android:visible是我拥有的自定义绑定适配器。
在我的情况下,我的问题在LongClickListener于此侦听器的方法必须返回 aboolean但我的方法返回了void所以当我添加正确的 return 语句时它工作得很好。
请记住,如果您使用数据绑定方法,您必须返回正确的值,否则它抛出的错误根本没有帮助。
| 归档时间: |
|
| 查看次数: |
7853 次 |
| 最近记录: |