Eu tenho a seguinte classe de fragmento escrita em Java usando a nova biblioteca de ligação de dados
import com.example.app.databinding.FragmentDataBdinding;
public class DataFragment extends Fragment {
@Nullable
private FragmentDataBinding mBinding;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false);
return mBinding.getRoot();
}
}
Compila e corre bem.
Tentei reescrevê-lo no Kotlin e criei o seguinte:
import com.example.app.databinding.FragmentDataBdinding
class ProfileFragment : Fragment() {
private var mBinding: FragmentDataBinding? = null
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false)
return mBinding!!.getRoot()
}
}
Mas agora a etapa :app:compileDebugKotlin
gera o seguinte:
Erro: (16, 38) Referência não resolvida: ligação de dados
Erro: (37, 27) Referência não resolvida: FragmentDataBinding
Como posso usar a biblioteca de ligação de dados do Android com o Kotlin?
Meu nível superior build.gradle
:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.android.databinding:dataBinder:1.0-rc4'
}
}
allprojects {
repositories {
jcenter()
}
}
Meu build.gradle
diretório no aplicativo (apenas partes relevantes):
apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
apply plugin: 'kotlin-android'
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
buildscript {
ext.kotlin_version = '0.14.451'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
repositories {
mavenCentral()
maven {
url 'http://oss.sonatype.org/content/repositories/snapshots'
}
}
Estou usando o Android Studio 1.4, Ferramentas de compilação versão 23.0.1, Android SDK 23, SDK tools 24.4.0
java
android
kotlin
android-databinding
Mikhail
fonte
fonte
apply plugin: 'kotlin-kapt'
no arquivo gradle do aplicativo na versão mais recente.Respostas:
Tente usar esta configuração:
No build.gradle principal :
App build.gradle :
fonte
2.2.0-alphaX
está disponível e, para sua informação, a versão da ligação de dados é igual à do próprio plugin do android-gradle. para que você possa externalizar essa versão e usá-la como a versão do compilador.apply plugin: 'kotlin-kapt'
também. Veja stackoverflow.com/a/42974558/1916449Encontrei nova solução, espero que ajude.
Antes de mais nada, verifique se o plug-in foi aplicado:
então
Você pode ter um erro na dependência:
USAR
ao invés de
Você pode visitar aqui para uma nova versão
Obrigado.
fonte
Atualização 2: Esta é uma resposta muito antiga; consulte a resposta de lrampazzo.
Funciona com 1.0-rc4, coloque
em suas dependências
Obrigado Ghedeon, pelo link nos comentários
Atualização : Aqui está um projeto de exemplo hello world realmente simples
fonte
Exception while analyzing expression at (12,23) in /projectpath/KotlinDataBinding/app/src/main/java/com/example/kotlindatabinding/MainActivity.kt:
. Você tem os mesmos erros? E qual é a sua versão do Android Studio?A versão do compilador Data Binding é igual à versão gradle no arquivo build.gradle do projeto:
e a versão gradle é
Aqui está um exemplo de link para concluir o uso da biblioteca de ligação de dados no kotlin.
https://proandroiddev.com/modern-android-development-with-kotlin-september-2017-part-1-f976483f7bd6
fonte
dataBinding.enabled = true
era o que eu estava esquecendoPara resolver o problema, você deve colocar
no topo do build.gradle (Module: app), em seguida, coloque esta linha nas dependências
Você pode encontrar a versão do plugin android, vá para o menu
Em seguida, sincronize novamente. Se você vir esse aviso, ignore-o.
fonte
Experimente o Android Studio 2.0 (2.1)
No build.gradle
No meu projeto:
buildToolsVersion = "23.0.3"
no nível superior build.gradle
fonte
este trabalho para mim no androidStudio ver3.1.3
fonte
Ligação de dados de configuração no kotlin
build.gradle (aplicativo de pasta)
Aprecie Kotlin ...
fonte
Atualização Importante
Você pode ver na documentação do Android.
Então, basta atualizar o seu Android Studio para a V3.2 ou mais recente . e remova todas as configurações desnecessárias.
Então, basta ativar o DataBinding no nível do aplicativo
build.gradle
.Ele fará todas as coisas automaticamente para você.
Você pode remover com segurança abaixo das linhas
Remover databinding.compiler
Remover
kapt
Minha configuração completa
build.gradle (Projeto)
Use a versão mais recente do gradle . Use a versão mais recente do kotlin .
build.gradle (App)
Importante Não basta copiar e colar config. Veja esta resposta para configurar a versão do Kotlin.
gradle-wrapper.properties
fonte
No meu caso, o erro foi que
Unresolved reference: RegisterationUserBinding
eu apenas usei o nome do meu layoutfragment_registeration_user
assimFragmentRegisterationUserBinding
e o fiz no layout Databinding e o erro desapareceu.fonte
Adicione o seguinte em você
app build.gradle
Isto irá fazer o truque.
$android_plugin_version
é a versão decom.android.tools.build:gradle
naapplication build.gradle
Além disso, adicione isso ao seu módulo
build.gradle
android { /// Existing Code kapt { generateStubs = true } }
fonte
Adicionar ligação de dados no projeto android usando quando você usa a linguagem kotlin.
Etapas abaixo
--Primeiro você precisa adicionar o plugin abaixo
--Segundo dataBinding ativado true
Todo esse ponto foi adicionado em app.build.gradle após o hit "SYNC NOW"
Vamos, por exemplo, editar a atividade do perfil, como definir a variável de ligação no kotlin?
Aqui, get binding é um método para lidar com qual tipo de objeto de ligação
fonte
No meu caso, adicionando
Resolvido o problema para mim. Eu o ignorei na primeira vez, achei irrelevante para o problema:
Mas agora, a ligação de dados está funcionando bem.
fonte
Quero compartilhar minha própria experiência. Para usar a ligação de dados com o Kotlin no android studio, basta adicionar
Depois disso, "sincronize" e, é muito importante, "criar projeto". Depois disso, todo o seu objeto estará ativo para uso.
fonte
Antes de tentar usar FragmentDetailsBinding, você deve converter o layout correspondente (fragment_details.xml) para o layout de ligação de dados, envolvendo todo o layout no "" tag parent e movendo todos os xmlns para o tag de layout, então crie o projeto e pronto.
fonte
Apenas saia de todas as dependências de ligação de dados e use-a
fonte