启用安全参数插件后无法从数据绑定获取根视图

Han*_* S. 15 android kotlin android-databinding android-safe-args

我正在使用 dataBinding 开发一个 Android 应用程序,目前正在尝试添加安全参数插件,但在启用插件后,我无法再通过 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
Run Code Online (Sandbox Code Playgroud)

我怎样才能让数据绑定和安全参数一起玩得很好?

请注意,虽然代码片段在 Kotlin 中,但我很乐意接受 Java 答案。在 Java 中不太舒服,但我可以轻松阅读和翻译它。

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

classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0"
Run Code Online (Sandbox Code Playgroud)

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

classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha07"
Run Code Online (Sandbox Code Playgroud)

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

这是我的片段的 onCreateView() 。当安全参数未启用时,该返回行正常工作,并且在启用时不起作用

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

    return binding.root
}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助解决或理解这个问题!

Dan*_*hin 24

我有同样的问题,最后我试过了

文件 -> 无效缓存/重启

这个对我有用。


小智 12

我有同样的问题,它对我来说是如此的连线,但只需重命名布局即可再次工作,请尝试:D

  • 奇怪的是,这确实起到了作用,谢谢。对于遇到同样问题的其他人,我所要做的就是重构>重命名与无法识别 binding.root 的类关联的布局 xml 文件。您还必须相应地重命名绑定的自动生成的类类型。一旦我这样做了,一切就正常了,我什至可以重新命名回原来的名称。不知道这对重建项目没有起到什么作用。 (3认同)