Неможливо отримати 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.