Reputation: 2157
I would like to act at one activity from another one. Lets call them Sender
and Receiver
. So, in Receiver
I have registered 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"))
And I send data from `Sender activity before closing it:
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()
}
Data which I send from Sender
is: 1,9238,1,12
and data which I receive at Receiver
: 1,0,0,0
I don't understand why it happens. Maybe I can't send several extras or what?
Upvotes: 0
Views: 140
Reputation: 14755
I send from Sender is: 1,9238,1,12
val intent = Intent()
intent.getIntExtra("message_id", 0)
you are reading data from an object that you just created which is "0".
try
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()
}
Upvotes: 2