我正试图通过Service
的广播传递arraylist,其意图类似于
ArrayList objects = new ArrayList();
for (MasterVO vo : masterVOs) {
objects.add(vo.getMasterTables());
objects.add(vo.getDeviceUpdateStatus());
}
Bundle extra = new Bundle();
extra.putSerializable("objects", objects);
intent.putExtra("extra", extra);
sendBroadcast(intent);
然后在活动中获取:
private void updateUI(Intent intent) {
Bundle extra = getIntent().getBundleExtra("extra");
ArrayList<Object> databaseList = (ArrayList<Object>) extra.getSerializable("objects");
fillMasterTable(databaseList);
}
广播的onReceive()
:
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateUI(intent);
}
};
我在extra
中得到null
。我做错了什么?我看到"sendBroadcast"部分有一些值。
您正在尝试从activity
而不是broadcast receiver
进行getIntent
。使用在onReceive
中接收到的intent
。
public void onReceive(Context context, Intent intent) {
updateUI(intent);
}
private void updateUI(Intent intent) {
Bundle extra = intent.getBundleExtra("extra"); //use intent NOT getIntent()
ArrayList<Object> databaseList = (ArrayList<Object>)
extra.getSerializable("objects");
fillMasterTable(databaseList);
}