Доступ к текстовому представлению из другого файла класса в kotlin

#android #android-studio #kotlin #textview

#Android #android-studio #kotlin #textview

Вопрос:

Я создаю TextView с идентификатором ReceivedCodeTxt в activity_receive_code.xml файле, а затем создаю новый файл kotlin с именем SMSReceiver.kt … Теперь я хочу задать текст для TextView в моем SMSReceiver.kt файле, но я не знаю, как получить к нему доступ и изменить текст из другого класса.

     val bundle = intent!!.extras
    try {
        if (bundle != null) {
            val pdusObj = bundle["pdus"] as Array<*>?
            for (i in pdusObj!!.indices) {
                val currentMessage = SmsMessage.createFromPdu(pdusObj[i] as ByteArray)
                val phoneNumber = currentMessage.displayOriginatingAddress
                val message = currentMessage.displayMessageBody
                Log.i("SmsReceiver", "senderNum: $phoneNumber; message: $message")
                // Show alert
                val toast = Toast.makeText(context,"senderNum: $phoneNumber, message: $message",Toast.LENGTH_LONG).show()

            } // end for loop
        } // bundle is null
    } catch (e: Exception) {
        Log.e("SmsReceiver", "Exception smsReceiver$e")
    }


}
  

}

Ответ №1:

Вы можете сделать это с помощью интерфейсов

создайте интерфейс в своем классе SMSReceiver.kt

 class SMSReceiver.kt(val callback:ICallback) {
    interface ICallback{
        fun updateUI(value:String)
    }

    fun doSomething() {
       // your operations to perform some task. then call this
       callback.updateUI(/*Pass your data which you want to set to your textview*/ "")
    }
}


class ActivityReceive: SMSReciever.ICallback {

    override fun updateUI(value:String) {
        //set the data which you got from SMSReceiver class
        textview.text = value
    }
}
  

Комментарии:

1. Спасибо тебе за помощь, чувак, но у меня это не работает, а также я не могу передать свои данные в другой класс