【发布时间】:2021-06-22 17:36:29
【问题描述】:
每 60 秒,它执行广播TEK 功能,将字符串 generatedtek 发送到其他活动 (AppCompatActivity()),即 BLEAdvertiser。
所以它应该在 Logcat 上打印接收到的字符串,但应用程序抛出异常。 为什么? 我用谷歌搜索过这个异常,有人说这是因为我发送的变量类型与我获取变量时的类型不匹配。但是在我的代码上,它们都是字符串......可能是什么问题?
【问题讨论】:
每 60 秒,它执行广播TEK 功能,将字符串 generatedtek 发送到其他活动 (AppCompatActivity()),即 BLEAdvertiser。
所以它应该在 Logcat 上打印接收到的字符串,但应用程序抛出异常。 为什么? 我用谷歌搜索过这个异常,有人说这是因为我发送的变量类型与我获取变量时的类型不匹配。但是在我的代码上,它们都是字符串......可能是什么问题?
【问题讨论】:
试试下面的代码,它会对你有所帮助。
class TestActivity : AppCompatActivity(), BTFragment.BLEAdvertiser {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test)
//Make sure your BTFragment calling from this activity
}
override fun receiveData(encryptedtk: String) {
toast(encryptedtk)
}
}
class BTFragment : Fragment() {
private lateinit var bleAdvertiser: BLEAdvertiser
override fun onAttach(context: Context) {
super.onAttach(context)
if (context is BLEAdvertiser) this.bleAdvertiser = context
}
fun broadcastTEk(text: String) {
this.bleAdvertiser.receiveData(text)
}
interface BLEAdvertiser {
fun receiveData(encryptedtk: String)
}
}
【讨论】:
MainActivity 来实现BLEAdvertiser。目前情况并非如此,这就是演员失败的原因(当你这样做时activity as BLEAdvertiser)