通过意图将类对象传递给android中的广播接收器

man*_*ari 3 android broadcastreceiver android-intent

大家好,我陷入了困境,请帮帮我。

为我服务

ChatMessage chatMessage = new ChatMessage();
chatMessage.setId(10)
chatMessage.setMessage("hello");
Intent intent = new Intent("MessageReceiver");
intent.putExtra("chatobj", chatMessage);
getApplicationContext().sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)

在我的活动中

public final BroadcastReceiver ReceiveChat = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
ChatMessage chatMessage = new ChatMessage(getIntent().getSerializableExtra("chatobj"));
Log.v(CommonUtilities.TAG, chatMessage.getMessage()+": new message");
}};
Run Code Online (Sandbox Code Playgroud)

这段代码是在活动开始时在oncreate()之前的。这有问题吗?日志具有空值。这是为什么 ?

Nil*_*hod 5

Serializable在模型类中实现。问题将得到解决

像这样

public class ChatMessage  implements Serializable{

 int id; 
 String name;
}
Run Code Online (Sandbox Code Playgroud)

发送这样的数据

Intent intent = new Intent("MessageReceiver");
Bundle args = new Bundle();
args.putSerializable("chatobj",(Serializable)chatobj);
intent.putExtra("DATA",args);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

接收这样的数据

Intent intent = getIntent();
Bundle args = intent.getBundleExtra("DATA");
ChatMessage chatMessage = (ChatMessage) args.getSerializable("chatobj");
Run Code Online (Sandbox Code Playgroud)