Articles of Котлин

Правила ProGuard для отражения Котлина

Вот очень простой класс: class MainActivity : AppCompatActivity() { val prop: String = "test" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d("MainActivity", ::prop.name) } } Если я запустил это приложение с помощью ProGuard, используя следующие правила: -dontwarn kotlin.** -dontwarn org.w3c.dom.events.* -dontwarn org.jetbrains.kotlin.di.InjectorForRuntimeDescriptorLoader Я получаю это исключение: adg: Property 'prop' not resolved in class com.cypressworks.kotlinreflectionproguard.MainActivity Какие правила […]

Kotlin, Proguard и lambdas

У меня есть аккуратная функция, которая что-то делает на вид: fun<T : View> Activity.withView(nr : Int, fn : T.()->Unit) { (findViewById(nr) as T?)?.fn() } Теперь, когда я использую эту функцию в своей деятельности: withView<Spinner>(R.id.spinner_toolbar) { adapter = AdapterIndeksuDlaSpinnera(this@NewMainActivity, PlaylistIndex) … все нормально, пока я не пользуюсь ProGuard. Я вижу, что AdapterIndeksuDlaSpinnera получает искалеченным, как и […]

Библиотека Kotlin 'classes.jar' имеет неподдерживаемый формат. Обновите библиотеку или плагин

Это сообщение появляется при синхронизации проекта. Я пытался очистить и перестроить проект, но не успел. Я использую последнюю версию плагина 0.12.275, "org.jetbrains.kotlin: kotlin-gradle-plugin: 0.12.213" и "org.jetbrains.kotlin: kotlin-stdlib: 0.12.213" Я пробовал с стабильной версией 0.12.200 для плагина и библиотеки, но я получаю ту же ошибку. Я использую Android Studio AI-141.1972460 (канальный канал).

RxJava не может быть завершен, как избежать toBlocking ()

В настоящее время я использую RxJava на Android с Kotlin, но у меня есть проблема, и я не могу решить, не используя toBlocking (). У меня есть метод в службе сотрудника, который возвращает Observable>: fun all(): Observable<List<Employee>> Это все и хорошо, так как этот Observable испускает новый список сотрудников всякий раз, когда меняется сотрудник. Но […]

Прочтите CSV по очереди в Котлине

Я пишу простое приложение импорта и вам нужно прочитать CSV-файл, показать результат в сетке и показать поврежденные строки файла CSV в другой сетке. Есть ли встроенная библиотека для нее или какой-либо простой питонический подход? Я делаю это на android.

Firebase & Retrieving Elements

Я пытаюсь прочитать x количество элементов из Firebase, но у меня есть чувство, что я что-то недопонимаю … DataSnapshot возвращает правильный подсчет числа, однако, когда я пытаюсь выполнить петлю через дочерние элементы, цикл никогда не выполняется. Примечание: Код в Котлине fun list(count: Int, callback: ListCallback) { val playersRef = firebase.child("players") val queryRef = playersRef.orderByChild("rank").limitToFirst(count) queryRef.addListenerForSingleValueEvent(object […]

Головная боль наследования котиновских дженериков

Я новичок в Kotlin, и я пытаюсь скомпилировать этот код без успеха (это всего лишь пример того, что я хочу сделать в реальном проекте): abstract class Builder<T: Any, Y: Any> class BuilderImpl() : Builder<String, Int>() abstract class Shape<T: Any>(){ abstract var builder: Builder<T, *> } class Circle() : Shape<String>(){ override var builder: Builder<String, Int> = […]

Как обратиться к лямбда изнутри?

Я пытаюсь получить высоту представления в методе onCreate, но я не смог найти способ удалить OnGlobalLayoutListener. В Java (работает): containerLayout.getViewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { containerLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); int width = layout.getMeasuredWidth(); int height = layout.getMeasuredHeight(); } }); В Котлине (не принимая «это»): containerLayout.viewTreeObserver.addOnGlobalLayoutListener { containerLayout.viewTreeObserver.removeOnGlobalLayoutListener(this) Toast.makeText(applicationContext, "size is "+ containerLayout.height,Toast.LENGTH_LONG).show() } Есть ли ссылка […]

Kotlin setter infinte рекурсия

Я тестирую kotlin на Android и сталкивался с проблемой, когда сеттеры двух переменных вызывают в бесконечной рекурсии, потому что они пытаются изменить друг друга, когда они изначально установлены. Вот пример кода class Example { var a: Int = 0 set(value) { b = a+10 } var b:Int = 0 set(value) { a = b-10 } […]

Realm, инициализируя пустой массив строк, возвращает «Unsupported type java.lang.String » on build

Я пытаюсь инициализировать пустой массив строк в классе Kotlin, однако синтаксис для этого, похоже, ускользает от меня, я проверил документы Kotlin, и я думаю, что делаю это правильно, но я всегда в конечном итоге Со следующим строкой: Error:Execution failed for task ':core:compileDebugJavaWithJavac'. > java.lang.IllegalStateException: Unsupported type java.lang.String[] Я пробовал следующие методы инициализации, Android Studio не […]