启用safe-args插件后无法从数据绑定获取根视图


15

我正在使用dataBinding开发一个Android应用程序,当前正在尝试添加safe-args插件,但是启用该插件后,我无法再通过binding.root获取根视图-Android Studio给出错误:

Unresolved Reference
None of the following candidates is applicable because of a receiver type mismatch:
* internal val File.root: File defined in kotlin.io

如何获得数据绑定和safe-arg一起玩的好习惯?

请注意,当代码片段位于Kotlin中时,我将很高兴获得Java答案。不太熟悉Java,但是我可以轻松阅读和翻译它。

我无法通过谷歌搜索错误消息和“安全参数”来找到其他遇到相同问题的人。我首先尝试使用以下Android文档中列出的类路径:https : //developer.android.com/guide/navigation/navigation-pass-data

classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0"

然后还找到了一个建议我使用的教程:

classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha07"

两者都有相同的问题:binding.root在激活插件时出现错误

这是我的片段的onCreateView()。当未启用safe-args时,该返回行正常工作,而在启用后则不起作用

   override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    binding = DataBindingUtil.inflate(inflater, R.layout.fragment_encoder, container, false)

    return binding.root
}

非常感谢您解决或理解此问题的任何帮助!

Answers:


11

我有同样的问题,它对我来说是如此,但只要重命名布局即可再次使用,请尝试:D


2
确实做到了,很奇怪,谢谢。对于其他来这里遇到相同问题的人,我要做的就是重构>重命名与无法识别binding.root的类关联的布局xml文件。您还必须相应地为绑定重命名自动生成的类类型。完成此操作后,一切正常,甚至可以将其重命名为原始名称。不知道这个做了什么重建项目没怎么..
汉娜S.

另外,如果您由于safe-args的问题而来这里,可能想改用共享的ViewModel和LiveData。那就是我现在正在使用的原因,因为当我遇到安全问题时我不得不继续前进,而且我更快乐
Hannah

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.