Неможливо отримати Root View від прив'язки даних після ввімкнення плагіна безпечних аргументів


15

Я працюю над додатком для Android, використовуючи dataBinding, і зараз намагаюся додати плагін безпечних аргументів, але після ввімкнення плагіну я більше не можу отримати вигляд кореня через obvez.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

Як я можу змусити прив'язування даних та безпечні аргументи грати добре разом?

Зауважте, що поки фрагмент коду знаходиться в Котліні, я з радістю прийму відповіді на Java. На Java не так зручно, але я можу легко її читати та перекладати.

Мені не вдалося знайти когось іншого із такою самою проблемою, відвідавши повідомлення про помилку Google і "безпечні аргументи". Спершу я спробував із класним шляхом, переліченим у документах 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"

Обидва мали однакову проблему :inding.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
}

Будь-яка допомога у вирішенні чи розумінні цієї проблеми найбільше цінується!

Відповіді:


11

У мене ж випуск, він для мене такий провідний, але просто перейменуйте макет спрацює знову, спробуйте це: D


2
Це і зробило трюк, як не дивно, дякую. Для інших, що приїжджають сюди з тією ж проблемою, все, що мені потрібно було зробити, це перейменувати> перейменувати файл компонування xml, пов’язаний з класом, який не розпізнавав vezu.root. Вам також доведеться відповідно перейменувати автоматично сформований тип класу для прив’язки. Як тільки я це зробив, все спрацювало правильно, і я навіть зміг перейменувати назад на початкове ім’я. Не впевнений, як це зробило щось, що відбудова проекту не зробила ..
— Ханна С.

Крім того, якщо ви знаходитесь тут через проблеми із безпечними аргументами, ви можете замість цього використати спільні ViewModel та LiveData. Це те, що я зараз використовую, тому що мені довелося продовжувати рух, коли я застряг у безпечних арґусах, і я набагато щасливіший
— Ханна С.

24

У мене те саме питання, і нарешті я спробував

Файл -> Недійсні кеші / Перезапуск

Це працює для мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.