You need to enable JavaScript to run this app. Kotlin开发中如何在另一个类中访问adapter_comm_recver的stringrec值
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin开发中如何在另一个类中访问adapter_comm_recver的stringrec值

你当前定义的stringrec是priiint方法内的局部变量,仅在方法执行过程中存在,方法执行结束后就会被系统回收,其他类无法直接访问该局部变量,需要调整变量的作用域或增加传递逻辑,常用实现方案如下:

方案1:提升为类公开成员属性

适合需要随时主动获取最新值的场景,修改adapter_comm_recver类代码,将stringrec提升为类成员属性:

class adapter_comm_recver(){
    // 提升为类成员属性,private set限制仅类内部可修改,避免外部随意篡改
    var stringrec: String = ""
        private set

    fun priiint(editTInput: String){
        stringrec = editTInput
        Log.e("tag1",stringrec)
    }
}

类B只要持有adapter_comm_recver的实例,即可直接访问该属性:

class B(private val recverInstance: adapter_comm_recver) {
    fun testGetValue() {
        val targetValue = recverInstance.stringrec
        // 后续按需处理targetValue即可
    }
}

方案2:通过回调实时传递值

适合不需要持久存储值,只需要在stringrec更新时同步通知类B的场景,无需主动轮询取值:
首先修改adapter_comm_recver类,增加回调监听:

class adapter_comm_recver(){
    // 定义值更新回调接口
    interface OnStringUpdateListener {
        fun onUpdate(newValue: String)
    }

    // 外部可设置监听器实例
    var updateListener: OnStringUpdateListener? = null

    fun priiint(editTInput: String){
        val stringrec = editTInput
        Log.e("tag1",stringrec)
        // 值更新时通知监听器
        updateListener?.onUpdate(stringrec)
    }
}

类B实现回调接口即可实时收到值:

class B : adapter_comm_recver.OnStringUpdateListener {
    init {
        // 初始化时将自身设置为监听器
        val recver = adapter_comm_recver()
        recver.updateListener = this
    }

    // 每次priiint方法被调用,该方法会自动收到最新的stringrec值
    override fun onUpdate(newValue: String) {
        // 按需处理newValue即可
    }
}

注意:如果两个类生命周期不同步,使用回调方案时需要在不需要监听时及时清空updateListener引用,避免内存泄漏。

内容的提问来源于stack exchange,提问作者Code Scan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 01:54:08