首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当在Android中点击通知时,细节屏幕数据不会改变。

当在Android中点击通知时,细节屏幕数据不会改变。
EN

Stack Overflow用户
提问于 2022-10-28 03:07:23
回答 1查看 34关注 0票数 0

我用警报管理器创建了一个简单的通知应用程序。报警器触发时间为1分钟,并应发出通知。但是,当我点击通知时,移动到包含第一个内容的details屏幕。

不会改变的。

下面的广播接收器每1分钟呼叫一次。通知随着不同的数据而变化,但在细节屏幕上没有变化。这就是问题所在。

AlarmReceiver

代码语言:javascript
复制
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())


    }
}

下面的类详细显示了通知数据。第二活动

代码语言:javascript
复制
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)


        }




    }
}
EN

回答 1

Stack Overflow用户

发布于 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包,您就会知道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74230226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档