Não é possível obter a visualização raiz da ligação de dados após ativar o plug-in safe-args

15

Estou trabalhando em um aplicativo Android usando dataBinding e atualmente estou tentando adicionar o plug-in safe-args, mas depois de ativar o plug-in, não consigo mais obter a visualização raiz via binding.root - o Android Studio apresenta o erro:

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

Como faço para que a ligação de dados e os argumentos de segurança funcionem bem juntos?

Observe que, enquanto o snippet de código estiver no Kotlin, aceitarei com satisfação as respostas Java. Não é tão confortável em Java, mas posso lê-lo e traduzi-lo facilmente.

Não consegui encontrar mais ninguém com o mesmo problema pesquisando a mensagem de erro e os "argumentos de segurança" no Google. Tentei primeiro com o caminho de classe listado nos documentos do Android aqui: https://developer.android.com/guide/navigation/navigation-pass-data

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

E também encontrei um tutorial sugerindo que eu use:

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

Ambos tiveram o mesmo problema: binding.root deu um erro com o plugin ativado

Aqui está o meu onCreateView () para o meu fragmento. Essa linha de retorno funciona corretamente quando o safe-args não está ativado e não funciona quando está ativado

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

    return binding.root
}

Qualquer ajuda para resolver ou entender esse problema é muito apreciada!

Hannah S.
fonte

Respostas:

11

Eu tenho o mesmo problema, é tão conectado para mim, mas apenas renomeie o layout para que funcione novamente, tente: D

MarkWang
fonte
2
Isso fez o truque, estranhamente, obrigado. Para outras pessoas que vêm aqui com o mesmo problema, tudo que eu precisava fazer era refatorar> renomear o arquivo xml de layout associado à classe que não estava reconhecendo binding.root. Você também precisará renomear o tipo de classe gerado automaticamente para a ligação de acordo. Depois que fiz isso, tudo funcionou corretamente e fui capaz de mudar o nome novamente para o nome original. Não sei como este fez nada de reconstruir o projeto fez não ..
Hannah S.
Além disso, se você estiver aqui devido a problemas com o safe-args, convém usar um ViewModel e LiveData compartilhados. Isso é o que eu estou usando agora porque eu tinha que continuar quando eu fiquei preso no seguro-args e eu sou muito mais feliz
Hannah S.
24

Eu tenho o mesmo problema e finalmente tentei

Arquivo -> Caches / Reiniciar inválidos

Funciona para mim.

Daniel Chin
fonte