【发布时间】:2020-07-28 15:22:20
【问题描述】:
我想在成功尝试LoginActivity 后启动DashBoardActivity。我也想在登录后广播 UserToken。但是我可以startActivity() 或sendBroadcast(). 如果我在LoginActivity.kt 中使用以下代码,那么
btnLogin.setOnClickListener {
if(loginSuccess){
sendBroadcast(Intent("TEST"))
startActivity(Intent(this, DashboardActivity::class.java))
finish()
}
}
Dashboard Activity 将打开,但广播 onReceive() 不起作用。请帮助我正确地完成这项任务。
DashBoardActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dashboard)
registerReceiver(userDataChangeReceiver,
IntentFilter("TEST"))
}
private val userDataChangeReceiver = object: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
println("succeess!")
}
}
}
【问题讨论】:
-
为什么要使用广播接收器?您可以启动将令牌放入意图的活动。类似于: Intent intent = new Intent(context, DashboardActivity.class); intent.putExtra(KEY, );开始活动(意图);
-
我的重点是广播...所以
-
好的,但您不应该使用广播接收器在您的应用程序中提供令牌。无论如何,您应该发布您的 DashboardActivity 代码以检查接收方是否已注册
-
我已经更新了帖子
-
问题是您在接收者注册之前发送广播。您在活动中注册接收器,但在活动尚未开始时发送广播
标签: android kotlin android-activity broadcastreceiver