新しいデータバインディングライブラリを使用して、Javaで記述された次のフラグメントクラスがあります
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();
}
}
コンパイルして正常に動作します。
Kotlinで書き直そうとしましたが、次のように思いつきました。
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()
}
}
しかし、現在、ステップ:app:compileDebugKotlin
は次を出力します。
エラー:(16、38)未解決の参照:データバインディング
エラー:(37、27)未解決の参照:FragmentDataBinding
KotlinでAndroidデータバインディングライブラリを使用するにはどうすればよいですか?
私のトップレベル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()
}
}
アプリディレクトリ内のbuild.gradle
(関連する部分のみ):
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'
}
}
Android Studio 1.4、ビルドツールバージョン23.0.1、Android SDK 23、SDKツール24.4.0を使用しています
この構成を使用してみてください。
メインでbuild.gradle:
buildscript {
ext.kotlin_version = '<kotlin-version>'
ext.Android_plugin_version = '2.2.0-alpha4'
dependencies {
classpath "com.Android.tools.build:gradle:$Android_plugin_version"
//... rest of the content
}
}
アプリbuild.gradle:
Android {
dataBinding {
enabled = true
}
}
dependencies {
kapt "com.Android.databinding:compiler:$Android_plugin_version"
}
kapt {
generateStubs = true
}
私は新しい解決策を見つけました。それがあなたに役立つことを願っています。
まず、プラグインが適用されているかどうかを確認します。
apply plugin: 'kotlin-kapt'
それから
Android {
...
...
dataBinding {
enabled = true
}
...
...
}
依存関係にエラーがある可能性があります。
USE
kapt 'com.Android.databinding:compiler:3.0.1'
代わりに
compile 'com.Android.databinding:compiler:3.0.1'
ありがとうございました。
データバインディングコンパイラのバージョンは、プロジェクトのbuild.gradleファイルのgradleバージョンと同じです。
// at the top of file
apply plugin: 'kotlin-kapt'
Android {
dataBinding.enabled = true
}
dependencies {
kapt "com.Android.databinding:compiler:3.0.0-beta1"
}
そしてgradleバージョンは
classpath 'com.Android.tools.build:gradle:3.0.0-beta1'
以下は、kotlinでデータバインディングライブラリの使用を完了するためのリンク例です。
https://proandroiddev.com/modern-Android-development-with-kotlin-september-2017-part-1-f976483f7bd6
1.0-rc4で動作します。
kapt 'com.Android.databinding:compiler:1.0-rc4'
あなたの依存関係に
Ghedeon、コメントへのリンクをありがとう
Update: Here's 本当にシンプルなハローワールドのサンプルプロジェクト
問題を解決するには、あなたが置く必要があります
apply plugin: 'kotlin-kapt'
build.gradleの先頭(モジュール:アプリ)で、この行を依存関係に配置します
kapt "com.Android.databinding:compiler:[YOUR_Android_PLUGIN_VERSION]"
メニューに移動して、Androidプラグインのバージョンを見つけることができます
File > Project Structure > Project
その後、再度同期します。この警告が表示された場合、無視してください。
サードパーティのGradleプラグインが原因の可能性があります
Andrid studio 2.0(2.1)をお試しください
build.gradleで
Android{
dataBinding {
enabled = true
}
...
}
dependencies {
kapt 'com.Android.databinding:compiler:2.0.0-rc1'
....
}
kapt {
generateStubs = true
}
私のプロジェクト:buildToolsVersion = "23.0.3"
トップレベルbuild.gradle
dependencies {
classpath 'com.Android.tools.build:gradle:2.0.0'
}
Kotlinの構成データバインディング
build.gradle(フォルダーアプリ)
apply plugin: 'kotlin-kapt'
Android {
...
dataBinding {
enabled = true
}
}
dependencies {
// data binding
kapt "com.Android.databinding:compiler:3.1.3"
}
コトリンをお楽しみください...
android Studio ver 3.1.3でのこの作業
apply plugin: 'kotlin-kapt'
dataBinding {
enabled = true
}
あなたに以下を追加してくださいapp build.gradle
kapt "com.Android.databinding:compiler:$Android_plugin_version"
apply plugin: 'kotlin-kapt' // This one at top where plugin belong to
これでうまくいきます。
$Android_plugin_version
はcom.Android.tools.build:gradle
のapplication build.gradle
のバージョンです
また、これをモジュールに追加しますbuild.gradle
Android { /// Existing Code kapt { generateStubs = true } }
Androidのドキュメント で見ることができます
バージョン3.2の新しいコンパイラはデフォルトで有効になっています。
だからちょうど更新あなたのAndroid StudioをV3.2または 新しい 。不要な設定をすべて削除します。
build.gradle
でdataBindingを有効にします。Android {
dataBinding {
enabled = true
}
}
自動的にすべてを行います。
削除databinding.compiler
kapt 'com.Android.databinding:compiler:3.0.1'
kapt
を削除
kapt {
generateStubs = true
}
build.gradle(プロジェクト)
kotlin_version = '1.2.71'
classpath 'com.Android.tools.build:gradle:3.2.0'
gradle最新バージョン を使用します。 kotlin最新バージョン を使用します。
build.gradle(アプリ)
apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
compileSdkVersion 28
targetSdkVersion 28
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
重要単に設定をコピーして貼り付けないでください。 Kotlinバージョンのセットアップについては、 この回答 を参照してください。
gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.Zip
私の場合、追加
kapt {
generateStubs = true
}
私のために問題を解決しました。初めて無視しましたが、問題とは無関係だと思いました。
未解決の参照データバインディング
しかし、現在、データバインディングは正常に機能しています。
Kotlin言語を使用している場合にAndroid Projectにデータバインディングを追加します。
ステップ以下
-まず、以下のプラグインを追加する必要があります
**apply plugin: 'kotlin-kapt'**
--2番目のdataBindingが有効true
**dataBinding {
enabled = true
}**
「SYNC NOW」を押した後にapp.build.gradleに追加されたこのすべてのポイント
たとえば、プロファイルアクティビティを編集してから、kotlinでバインド変数を定義する方法を教えてください。
lateinit var buildProfileBinding: ActivityBuildProfileBinding
buildProfileBinding = getBinding()
ここで、get bindingはどのタイプのバインディングオブジェクトを処理するメソッドです
protected <T extends ViewDataBinding> T getBinding() {
return (T) binding;
}
私の場合、エラーはUnresolved reference: RegisterationUserBinding
でした。レイアウト名fragment_registeration_user
をこのFragmentRegisterationUserBinding
のように使用し、Databindingレイアウトで作成するとエラーはなくなりました。
自分の経験を共有したい。 Android studioでKotlinでデータバインディングを使用するには、追加するには十分です
dataBinding {
enabled = true
}
その後、「同期」し、「プロジェクトを作成」することが非常に重要です。その後、すべてのオブジェクトが使用可能になります。