Есть проект написанный полностью на Java. Решил перевести несколько классов в Kotlin. В проекте используется Butterknife для инициализации различных view-элементов. Но когда к проекту подключаешь Kotlin и все его плагины, то проект начинает выплевывать ошибки NullPointerException. Как я понял Butterknife перестает инициализировать элементы, так как если делать это методом findViewById, то всё работает.
ProductKotlin.kt
package com.example.project
...
import android.arch.persistence.room.*
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
@Entity(tableName = "product")
data class Product ( // It's correct
@PrimaryKey(autoGenerate = true)
var idProduct:Int,
var name: String,
var amount: Int,
var price: Double,
var weight: Double,
var image: String,
var producer: String
) : Parcelable {
override fun toString(): String {
return "Product{" +
"idProduct=" + idProduct +
", name='" + name + '\'' +
", amount=" + amount +
", price=" + price +
", weight=" + weight +
", image='" + image + '\'' +
'}'
}
fun log() {
Log.d("Kotlin", toString());
}
}
MainActivity.java
...
@BindView(R.id.pager)
protected ViewPager pager;
...
private void init_slider() {
new ProductKotlin(1,"Kotlin",3,4,5,"image","producer").log();
adapter = new ViewPagerAdapter(getSupportFragmentManager(), getResources().getStringArray(R.array.tabs), getResources().getStringArray(R.array.tabs).length);
pager.setAdapter(adapter); //NULLPointerException
tabs.setDistributeEvenly(true);
tabs.setCustomTabColorizer(position -> getResources().getColor(R.color.grey_200));
tabs.setViewPager(pager);
...
}
bild.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'org.jetbrains.kotlin.android.extensions'
apply plugin: 'kotlin-kapt'
...
androidExtensions {
experimental = true
}
...
dependencies {
...
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
...
}
Скорее всего вам надо заменить в build.gradle
все annotationProcessor
на kapt
.
используйте Kotlin Android Extensions
.
Можете тут прочитать https://kotlinlang.org/docs/tutorials/android-plugin.html
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Готовлюсь к конкурсу по программированию на JavaВыбрал необычную тему
Программно добавляю фрагменты в GridLayout, фрагменты по нажатию на них удаляются, можно ли сделать так чтобы они построчно тянулись к левому...
Имеется многопоточная среда обработки ивент-событийСам поток обработчик: