Articles of kotlin extension

Android Studio 3 не может построить фрагмент kotlin

Я пытаюсь использовать Kotlin с Android Studio 3.0 с моим существующим проектом. Я создал фрагмент, используя kotlin. Я пытаюсь использовать фрагмент kotlin в своей Java-активности. Но каждый раз, когда я пытаюсь запустить его, я получаю Error:(209, 5) error: cannot find symbol class BlankFragment BlankFragment.kt import android.content.Context import android.net.Uri import android.os.Bundle import android.support.v4.app.Fragment import android.view.LayoutInflater import […]

Нажатие текстового поля для изменения фрагмента

Я пытаюсь создать свое первое приложение для Android с помощью Kotlin, но я застрял в очень простой ситуации. Я использую расширения Kotlin android и получаю исключение Null pointer. <TextView android:id="@+id/tvGoToRegisterFrag" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btn_sign_in" android:text="@string/haven_t_registered_yet" android:paddingTop="10dp" android:textColor="@color/colorAccent" android:layout_centerHorizontal="true"/> С этим я использовал tvGoToRegisterFrag.setOnClickListener { goToRegister() } Я знаю, что могу использовать tvGoToRegisterFrag?.setOnClickListener { goToRegister() } Чтобы […]

Как правильно использовать URL-адрес с Kotlin Android

Я хочу использовать override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val json = URL("https://my-api-url.com/something").readText() simpleTextView.setText(json) } но эта фатальная ошибка возникает FATAL EXCEPTION: main Process: com.mypackage.randompackage, PID: 812 java.lang.RuntimeException: Unable to start activity ComponentInfo{ ***.MainActivity}: android.os.NetworkOnMainThreadException Как я могу просто прочитать JSON по ссылке URL? Пакет функции async не существует.

Функции расширения Котлина внезапно требуют уровня api 24

Я только что заметил эту ошибку lint: для вызова требуется Api Level 24 (текущий min равен 19) java.util.map # foreach, когда я использую функцию расширения для каждого на MutableMap в Котлине. Этого не произошло, когда я написал строку, но теперь ее там. И я не вижу эту ошибку на другой машине.

Как сохранить тип объекта для интеллектуального каста при возврате Any

Извиняюсь, если это глупый вопрос, Котлин по-прежнему новичок в моей жизни, и я не знаком с синтаксисом «типы», поэтому нашел, что ему трудно найти решение. fun Any?.test(): Any? { return this } "test string".test() // implicit string is now type of "Any" "test string".test().substring() // what i'm trying to achieve Я в основном хочу, чтобы […]

Kotlin: Как запустить методы обслуживания в контексте класса транзакций?

Я хотел бы определить вызовы базы данных в методах службы, но их выполнить в контексте класса Transaction не открывая соединение в самой службе, чтобы я мог включать несколько вызовов службы в одну транзакцию. Я ищу что-то подобное, но не могу понять. class Transaction { init { /** Grab connection **/ } fun doSelect() { … […]

Функция расширения не создает новый объект Observable

У меня неожиданное поведение с котлин и rxjava. Я создаю функцию расширения для загрузки изображения с помощью пикассо fun Picasso.loadBitmap(url: String) : Observable<Bitmap> = Observable.create<Bitmap> { emitter -> Log.d("picasso load bitmap", "me ${this}") try { val bitmap = load(url).centerCrop() .resize(100, 100) .transform(CircleTransformer()) .get() emitter.onNext(bitmap) emitter.onComplete() } catch (e: IOException) { emitter.onError(e) } } Я называю […]

Есть ли разница между «объектом-получателем» и «приемником расширения»,

Трудно сказать по документам https://kotlinlang.org/docs/reference/extensions.html так что я задаюсь вопросом, являются ли получателем и ресивером то же самое? или имя зависит от контекста?

Требуется функция Котлина Нет, но определяется как другой тип

Я определил такой класс abstract class MvpViewHolder<P>(itemView: View) : RecyclerView.ViewHolder(itemView) where P : BasePresenter<out Any?, out Any?> { protected var presenter: P? = null fun bindPresenter(presenter: P): Unit { this.presenter = presenter presenter.bindView(itemView) } } где presenter.bindView(itemView) дает мне ошибку, presenter.bindView(itemView) Type mismatch, required: Nothing, found: View! , Я определил bindView внутри класса presenter следующим […]

Генераторы Котлина, ожидающие неожиданного типа

Я определил следующий базовый класс с двумя родовыми типами и использовал его на два уровня в глубину (из-за отсутствия лучшей фразы). Вот мой прецедент. abstract class BasePresenter<out M, out V> { var model: M? = null var view: WeakReference<V>? = null fun setM(model: M?): Unit { this.model = model if (setupDone()) { updateView() } } […]