Один из способов сделать это будет со слушателем (хотя и не очень элегантно):
Определение интерфейса для слушателя в вашей активности:
interface WordsListener {
fun onWordsReady(words: String)
}
Добавьте его в Scrape's
Конструктор:
class Scrape(val wordsListener: WordsListener) : AsyncTask<Void, Void, Void>() {
И передайте его при создании Scrape
в вашем onCreate()
. Внутри этого слушателя вы теперь можете получить доступ к переменной texx
.
Scrape(object: WordsListener {
override fun onWordsReady(words: String) {
texx.text = words
}
}).execute()
Другой возможностью было бы сделать texx
переменной класса и пометить Scrape
как внутренний класс . Таким образом, он будет иметь доступ к texx
. Помните, однако, что поскольку внутренние классы содержат ссылку на внешний класс и могут обращаться к внешним элементам класса, это может в некоторых случаях приводить к утечкам памяти (например, утечка вашей активности)
Некоторые другие улучшения:
- вы не читаете из
words
, определенного в Scrape
, зачем это нужно? Вы хотите использовать это, или R.id.words
? Этот бит сбивает с толку
- исправить ваши отступы (отступы очень важны для ясности при чтении кода)
- обратите внимание на имена переменных, например.
texx
, text1
, button1
и т. Д. Не лучшие имена