Расширение Kotlin TextView

У меня есть этот TextView в моем макете

<TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="text"/>

Теперь я хочу установить текст этого Textview с расширением Kotlin Android. Поэтому я добавил apply plugin: 'kotlin-android-extensions' в свой файл build.gradle. Теперь в моем классе я хочу установить текст в TextView с помощью

textView.text("MyText")

Если я импортирую textView с автозаполнением «alt + return», импорт является не синтетическим импортом, а импортом в прямой ресурс com.package.R.id.textView В конце у меня есть целочисленный объект вместо TextView

Может кто-нибудь объяснить мне, что я делаю неправильно?


person dudi    schedule 25.07.2018    source источник
comment
попробуйте - textView.text = Мой тест   -  person Aarth Tandel    schedule 25.07.2018
comment
У меня нет метода text, потому что textView не является TextView, а представляет собой целочисленный объект   -  person dudi    schedule 25.07.2018
comment
Можете ли вы опубликовать код в файле kt?   -  person Aarth Tandel    schedule 25.07.2018
comment
Что это за Класс? Ява или Котлин?   -  person    schedule 25.07.2018
comment
просто добавьте это в оператор импорта import kotlinx.android.synthetic.main.activity_main.* и затем используйте textView.setText(your_text);   -  person Sachin    schedule 25.07.2018
comment
используйте либо text = R.string.something, либо setText("something"), вы не можете использовать text = "something"   -  person Tim    schedule 25.07.2018
comment
textView.setText (Ваш текст) отлично работает здесь, в файле kotlin. @ДудиДудевиц   -  person Ankita    schedule 25.07.2018
comment
Попробуйте удалить ненужный импорт и снова попробуйте импортировать kotlinx.android.synthetic.main.activity_main.*   -  person Aarth Tandel    schedule 25.07.2018
comment
Итак, проблема в том, что вместо импорта kotlinx.android.synthetic.main.your_activity.* вы импортировали com.package.R.id.textView   -  person    schedule 25.07.2018
comment
@mTak это абстрактный класс котлина   -  person dudi    schedule 25.07.2018
comment
@mTak @Aarth Tandel да. Я пытался импортировать синтетический импорт вручную, как это import kotlinx.android.synthetic.main.myLayout.* , но это не работает   -  person dudi    schedule 25.07.2018
comment
@DudiDudewitz Я не уверен, что понимаю: вы хотите использовать TextView из макета в своем проекте в абстрактном классе Kotlin?   -  person    schedule 25.07.2018
comment
@mTak да, правильно   -  person dudi    schedule 25.07.2018
comment
о, теперь я вижу свою проблему там. Я использую метод, который ожидает представления в качестве аргумента. Внутри метода я сопоставил textView, полученный из аргумента параметра. В этом нельзя использовать расширения kotlin для Android.   -  person dudi    schedule 25.07.2018


Ответы (3)


Используйте textView.setText(" ") вместо textView.text(" ") с текстовым представлением типа-

textView.setText("Ваш текст здесь");

person Ankita    schedule 25.07.2018
comment
все еще целочисленный объект - person dudi; 25.07.2018
comment
Можете ли вы показать мне, с чем именно вы столкнулись.? Потому что я запускаю это с файлом kotlin, и он работает нормально. - person Ankita; 25.07.2018

Похоже, вы импортировали не тот пакет, просто удалите пакетcom.package.R.id.textView А вместо этого вам нужно import kotlinx.android.synthetic.main.your_layout_file_name.*

person shahid17june    schedule 30.07.2018
comment
Можете ли вы показать свои ошибки logcat. И одна вещь, которую вы используете в действии или фрагменте? - person shahid17june; 11.08.2018

Сначала импортируйте этот import kotlinx.android.synthetic.main.layoutfile.*;

а затем вызовите textview и назначьте settext (не используйте alt+enter)

person sainadh    schedule 10.08.2018