Impossibile ottenere la vista principale da Data Binding dopo aver abilitato il plugin safe-args


15

Sto lavorando su un'app Android usando dataBinding e attualmente sto provando ad aggiungere il plug-in safe-args, ma dopo aver abilitato il plug-in, non riesco più a visualizzare la root tramite binding.root - Android Studio dà l'errore:

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

Come posso ottenere databinding e safe-args per giocare bene insieme?

Nota che, mentre lo snippet di codice è in Kotlin, accetterò felicemente le risposte di Java. Non è così comodo in Java ma posso facilmente leggerlo e tradurlo.

Non sono stato in grado di trovare nessun altro con lo stesso problema cercando su Google il messaggio di errore e "argomenti sicuri". Ho provato prima con il percorso di classe elencato nei documenti Android qui: https://developer.android.com/guide/navigation/navigation-pass-data

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

E poi ho anche trovato un tutorial che mi suggerisce di usare:

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

Entrambi avevano lo stesso problema: binding.root ha dato un errore con il plugin attivato

Ecco il mio onCreateView () per il mio frammento. Quella linea di ritorno funziona correttamente quando safe-args non è abilitato e non funziona quando è abilitato

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

    return binding.root
}

Qualsiasi aiuto per risolvere o comprendere questo problema è molto apprezzato!

Risposte:


11

Ho lo stesso problema, è così cablato per me, ma basta rinominare il layout funzionerà di nuovo, provaci: D


2
Questo ha fatto il trucco, stranamente, grazie. Per altri che sono venuti qui con lo stesso problema, tutto quello che dovevo fare era refactor> rinominare il file xml di layout associato alla classe che non riconosceva binding.root. Dovrai anche rinominare il tipo di classe generata automaticamente per l'associazione di conseguenza. Una volta fatto ciò, tutto ha funzionato correttamente e sono stato anche in grado di rinominare nuovamente il nome originale. Non sono sicuro di come questo abbia fatto qualcosa per ricostruire il progetto non ...
Hannah S.

Inoltre, se sei qui a causa di problemi con safe-args, potresti voler esaminare invece l'utilizzo di ViewModel e LiveData condivisi. Questo è quello che sto usando ora perché ho dovuto andare avanti quando sono rimasto bloccato su argomenti di sicurezza e sono molto più felice
Hannah S.

24

Ho lo stesso problema e alla fine ho provato

File -> Cache / Riavvio non validi

Per me funziona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.