Nie można uzyskać widoku głównego z powiązania danych po włączeniu wtyczki Safe-Args

15

Pracuję nad aplikacją na Androida używającą dataBinding i obecnie próbuję dodać wtyczkę safe-args, ale po włączeniu wtyczki nie mogę już uzyskać widoku głównego za pośrednictwem bind.root - Android Studio wyświetla błąd:

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

Jak mogę uzyskać powiązanie danych i bezpieczne argumenty, aby wspólnie grać dobrze?

Pamiętaj, że gdy fragment kodu znajduje się w Kotlinie, chętnie przyjmę odpowiedzi w języku Java. Nie jest tak wygodne w Javie, ale mogę go łatwo przeczytać i przetłumaczyć.

Nie udało mi się znaleźć nikogo z tym samym problemem, przeglądając komunikat o błędzie i „bezpieczne argumenty”. Najpierw próbowałem ze ścieżką klasy wymienioną w dokumentach Androida tutaj: https://developer.android.com/guide/navigation/navigation-pass-data

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

A potem znalazłem również samouczek sugerujący użycie:

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

Oba miały ten sam problem: bind.root zgłosił błąd przy aktywowanej wtyczce

Oto moja funkcja onCreateView () dla mojego fragmentu. Ta linia zwrotna działa poprawnie, gdy funkcja bezpiecznego argumentu nie jest włączona i nie działa, gdy jest włączona

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

    return binding.root
}

Jakakolwiek pomoc w rozwiązaniu lub zrozumieniu tego problemu jest najbardziej doceniana!

Hannah S.
źródło

Odpowiedzi:

11

Mam ten sam problem, jest dla mnie taki okablowany, ale po prostu zmień nazwę, układ znowu będzie działał, spróbuj: D

MarkWang
źródło
2
To zadziałało, co dziwne, dzięki. Dla innych, którzy przychodzą tutaj z tym samym problemem, wszystko, co musiałem zrobić, to refaktoryzacja> zmiana nazwy pliku xml układu powiązanego z klasą, która nie rozpoznawała pliku bind.root. Będziesz także musiał odpowiednio zmienić nazwę automatycznie wygenerowanego typu klasy dla powiązania. Kiedy to zrobiłem, wszystko działało poprawnie i mogłem nawet zmienić nazwę z powrotem na pierwotną nazwę. Nie jestem pewien, jak to się przyczyniło do przebudowy projektu, nie ..
Hannah S.,
Również jeśli jesteś tutaj z powodu problemów z bezpiecznymi argumentami, może warto zamiast tego użyć wspólnego ViewModel i LiveData. Tego właśnie używam, ponieważ musiałem iść dalej, kiedy utknąłem na bezpiecznych argumentach i jestem znacznie szczęśliwszy
Hannah S.,
24

Mam ten sam problem i wreszcie próbowałem

Plik -> Nieprawidłowe pamięci podręczne / Uruchom ponownie

Mi to pasuje.

Daniel Chin
źródło