首页 > 解决方案 > 在 val 之外获取字符串?

问题描述

我对下面的书面代码有疑问。

我在batteryBroadcastReceiver 中创建了一个名为TEMP 的val,现在我想请求在batteryBroadcastReceiver 之外的数据TEMP,但这不起作用。

有没有人向我解释如何在电池广播接收器之外显示 TEMP

val test = temp

private val batteryBroadcastReceiver: BroadcastReceiver = object : BroadcastReceiver(){

    override fun onReceive(context: Context?, intent: Intent?) {
        if(intent?.action == "android.intent.action.BATTERY_CHANGED"){

            val temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0)
            // set the text view
            tvBatteryTemp?.post{
                tvBatteryTemp?.text = "${temp}" + "°C"
                startService(this@ForegroundService,"${temp}")
            }
        }
    }
}

标签: androidkotlin

解决方案


您可以创建一个全局变量并使用它访问 temp 的值。

代码:

val temp: Int = 0

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    // Example Code of how the temp value can be accessed now and would be dynamic
    val testBtn = findViewById<Button>(R.id.button)
    testBtn.setOnClickListener { 
        Toast.makeText(this,"Your temp value is $temp",Toast.LENGTH_SHORT).show()
    }
}


private val batteryBroadcastReceiver: BroadcastReceiver = object : BroadcastReceiver(){

    override fun onReceive(context: Context?, intent: Intent?) {
        if(intent?.action == "android.intent.action.BATTERY_CHANGED"){

            temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0)
            // set the text view
            tvBatteryTemp?.post{
                tvBatteryTemp?.text = "${temp}" + "°C"
                startService(this@ForegroundService,"${temp}")
            }
        }
    }
}

希望这对您有所帮助。快乐编码!:)


推荐阅读