Приемник трансляции отправляет неверные данные от одного действия другому. - PullRequest
0 голосов
/ 28 мая 2020

Я хотел бы действовать в соответствии с одним видом деятельности из другого. Назовем их Sender и Receiver. Итак, в Receiver я зарегистрировал получателя:

receiver = object : BroadcastReceiver() {
            override fun onReceive(context: Context, intent: Intent) {
                val command = intent.getIntExtra("action_id", -1)
                val bundle = intent.extras

                for (key in bundle!!.keySet()) {
                    val value = bundle[key]
                    Timber.i(String.format("%s %s (%s)", key,
                            value.toString(), value!!.javaClass.name))
                }

            }
        }

registerReceiver(receiver, IntentFilter("command"))

И я отправляю данные из `Действия отправителя перед его закрытием:

backToMess.setOnClickListener {
            dialog.dismiss()

            val intent = Intent()
            intent.action = "command"
            intent.putExtra("action_id", 1)
            intent.putExtra("m_id", intent.getIntExtra("message_id", 0))
            intent.putExtra("list_type", intent.getIntExtra("list_type", 0))
            intent.putExtra("list_pos", intent.getIntExtra("list_pos", 0))
            sendBroadcast(intent)

            finishAndRemoveTask()
        }

Данные, которые я отправляю из Sender, : 1,9238,1,12 и данные, которые я получаю на Receiver: 1,0,0,0 Я не понимаю, почему это происходит. Может я не могу отправить несколько экстров что ли?

1 Ответ

2 голосов
/ 28 мая 2020

Я отправляю от отправителя: 1,9238,1,12

val intent = Intent()
intent.getIntExtra("message_id", 0)

вы читаете данные из только что созданного вами объекта, который равен «0».

попробовать

   backToMess.setOnClickListener {
        dialog.dismiss()

        val broadcastIntent = Intent()
        broadcastIntent.action = "command"
        broadcastIntent.putExtra("action_id", 1)
        broadcastIntent.putExtra("m_id", intent.getIntExtra("message_id", 0))
        broadcastIntent.putExtra("list_type", intent.getIntExtra("list_type", 0))
        broadcastIntent.putExtra("list_pos", intent.getIntExtra("list_pos", 0))
        sendBroadcast(broadcastIntent)

        finishAndRemoveTask()
    }
...