【问题标题】:java.lang.NullPointerException when dataBinding enabled = truejava.lang.NullPointerException 当 dataBinding 启用 = true
【发布时间】:2020-01-25 10:04:19
【问题描述】:

每当我在我的应用程序 gradle 中启用此功能时

dataBinding { 
    enabled = true
}

然后同步 -> 完全成功。

但是当我“运行”它时,它构建失败并显示此错误

java.lang.NullPointerException 在 android.databinding.tool.store.LayoutFileParser.parseOriginalXml(LayoutFileParser.java:135) 在 android.databinding.tool.store.LayoutFileParser.parseXml(LayoutFileParser.java:93) ...

我的应用Kotlin代码很少,android版本是3.5,minSdkVersion 19,targetSdkVersion 28,升级到androidX

我该如何解决这个问题?我应该搜索哪个部分来解决这个问题???

除了上面的代码,一切都很完美。


编辑 而且当我在升级到androidX之前回滚代码并编译它时,它也显示“空点异常”,此时没有额外的消息,只有“空点异常”。


【问题讨论】:

  • 嗨@youngwoon 我可以怀疑的一个原因是因为androidx。因为有时它无法正确处理或转换布局文件。并且在运行时它将崩溃,因为找不到该类。在编译时它也会抛出一些错误。请检查并发布未转换的 androidx 包的最新布局文件。
  • @vikaskumar 谢谢你的评论!!我能解释一下“为未转换的 androidx 包发布最新的布局文件”吗?我不明白你想要什么..抱歉英语不熟悉.T_T
  • @youngwoon 除非您提供所有信息,否则无法回答这个问题......就像导致上述堆栈跟踪的 XML 文件一样。到目前为止,您只向我们展示了结果。
  • @youngwoon 遗憾的是,错误消息并没有说明这一点。可能是,其中没有一个添加了<layout><data> 节点,或者布局可能仍然引用com.android.support 库而不是androidx 库(这些不会自动迁移)。
  • 好吧,做一件事,尝试通过按 command + shift + f 进行搜索并输入 android.support.constraint.ConstraintLayout 并查看是否有任何包仍然在旧包名称上,即使将它们转换为安卓x。像这样尝试recyclerview和cardview和progressbar也有完整的包名,看看它们是否包含androidx。我希望这可能会有所帮助,请在此之后告诉我。

标签: android android-databinding androidx


【解决方案1】:

我尝试了太多,但我想通了。我在Mac电脑上创建了项目,后来切换到windows就没有问题了。当我尝试创建一个新文件时,我得到了这个错误并且明白了为什么。每次我右键单击刚刚添加的文件时,都会看到一个名为“删除 BOM”的选项。点击这个解决了我的问题。但是我没有从逻辑上找到问题的解决方案,我只是随机发现的。

例如:https://prnt.sc/riw6ex

【讨论】:

    【解决方案2】:

    终于有答案了。 (cc.android databinding error:Execution failed for task ':app:dataBindingProcessLayoutsDebug')

    我猜是因为 BOM。有人说当代码用于两种不同的环境(Window和Mac)时会发生这种情况。

    所以在“res”文件夹中,我点击了 android studio 中的“remove BOM”按钮,该操作更改了一些 xml 文件。

    <?xml version="1.0" encoding="utf-8"?>
    

    但它不适用于 Mac。此解决方案仅适用于 Window。

    【讨论】:

    • 这个解决方案在我的 Mac 上对我有用。在上面链接的 SO 帖子中查看我的答案
    • 我的意思是 Yanwen 在stackoverflow.com/questions/35097445/… 中的回答对我有用,即删除布局文件上的 BOM 解决了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多