我用警报管理器创建了一个简单的通知应用程序。报警器触发时间为1分钟,并应发出通知。但是,当我点击通知时,移动到包含第一个内容的details屏幕。
不会改变的。
下面的广播接收器每1分钟呼叫一次。通知随着不同的数据而变化,但在细节屏幕上没有变化。这就是问题所在。
AlarmReceiver
class AlarmReceiver : BroadcastReceiver()
{
override fun onReceive(context: Context?, intent: Intent?)
{
var dbHelper = context?.let { DbHelper(it) }
val question = dbHelper?.getQuestion((0..1280).random())
val i = Intent(context, SecondActivity::class.java)
i.putExtra("LAW", question)
i!!.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
val pendingIntent = PendingIntent.getActivity(context, 0, i, 0)
val builder = NotificationCompat.Builder(context!!, "foxandroid")
.setSmallIcon(R.drawable.ic_launcher_background)
.setContentTitle("${question!!.type} ${question!!.code} ${question!!.subcode} ${question!!.shortDesc}")
.setContentText("${question!!.fullDesc}")
.setAutoCancel(true)
.setDefaults(NotificationCompat.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setContentIntent(pendingIntent)
val notificationManager = NotificationManagerCompat.from(context)
notificationManager.notify(123, builder.build())
}
}下面的类详细显示了通知数据。第二活动
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
val law = if (Build.VERSION.SDK_INT >= 33) {
intent.getSerializableExtra("LAW", Question::class.java)
} else {
intent.getSerializableExtra("LAW") as Question
}// as? Question
Log.e("law:", "${law!!.shortDesc}")
if (law != null) {
textTitle.text = "${law.type} ${law.code} ${law.subcode} ${law.shortDesc}"
}
if (law != null) {
textContent.text = law.fullDesc
}
button.setOnClickListener {
val intent= Intent(this,WebActivity::class.java)
intent.putExtra("LAW", "${law?.type} ${law?.code} ${law?.subcode}")
startActivity(intent)
}
}
}发布于 2022-10-28 06:39:34
您应该使用Activity#onNewIntent(https://developer.android.com/reference/kotlin/androidx/activity/ComponentActivity?hl=en#onNewIntent(android.content.Intent%29), )
您的Activity已经创建好了,当您再次启动活动时,Activity可能不是运行onCreate生命周期函数,而是运行onNewIntent。OnNewIntent类onCreate,它们是生命周期函数。
您只需尝试在Intent中登录额外的OnNewIntent包,您就会知道。
https://stackoverflow.com/questions/74230226
复制相似问题