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-argsを組み合わせてうまく機能させることができますか?

コードスニペットが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
}

この問題を解決または理解するための支援が最も高く評価されます!

回答:


11

私は同じ問題を抱えています、それは私にとってとても配線されていますが、レイアウトの名前を変更するだけで再び機能します、それを試してください:D


2
奇妙なことに、これでうまくいきました。同じ問題でここに来る他の人にとって、私がしなければならなかったのは、bining.rootを認識していないクラスに関連付けられたレイアウトxmlファイルの名前を変更することだけでした。それに応じて、バインディング用に自動生成されたクラス型の名前も変更する必要があります。これを行うと、すべてが正しく機能し、元の名前に戻すこともできました。これがどのようにしてプロジェクトを再構築したのかわからない..
Hannah S.

また、safe-argsの問題が原因でここにいる場合は、代わりに共有ViewModelとLiveDataの使用を検討する必要があります。それは私が今使用しているものです。なぜなら、私がセーフ引数に行き詰まったときも続けなければならなかったので、私はずっと幸せです
Hannah S.

24

私は同じ問題を抱えており、やっと試しました

ファイル->無効なキャッシュ/再起動

わたしにはできる。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.