在我的Android应用中,我在MainActivity
范围内定义了一个函数,如下所示:
class MainActivity : AppCompatActivity() {
fun connectWebSocket() { }
}
这是因为我想在runOnUiThread
函数中使用connectWebSocket()
。
在另一个BroadcastReceiver()
中,我试图将此connectWebSocket()
称为:
class MyLocationService : BroadcastReceiver() {
connectWebSocket()
}
但是我失败了,并得到了这个错误:
未解决的参考:connectWebSocket
我该如何解决?
答案 0 :(得分:0)
要在其他组件中使用活动范围方法,我们可以使用它的静态引用,如下所示:
class MyLocationService : BroadcastReceiver() {
companion object {
var mainActivity: MainActivity? = null
}
fun do () {
mainActivity?.connectWebSocket()
}
fun clean() {
MyLocationService.mainActivity = null
}
}
class MainActivity : AppCompatActivity() {
init() {
MyLocationService.mainActivity = this
}
}
答案 1 :(得分:0)
在广播接收器中,您具有带有上下文参数的onReceive方法,可以将其强制转换为活动并调用connectWebSocket()
@Override
public void onReceive(Context context, Intent intent)
{
if(context instance MainActivity){
((MainActivity)context).connectWebSocket()
}
}