Handler 接收Parcelable ArrayList时返回空的错误
遇到一个问题,从handler 接收的Parcelable ArrayList返回空,调试发现这个arraylist生成的时候是有值的,传到handler就没值了
赋值的代码
new Thread(new Runnable() { @Override public void run() { ArrayList<Entry> entryList = parseRssXml(response); Message msg = Message.obtain(); msg.getData().putParcelableArrayList("list",entryList); mHandler.sendEmptyMessage(CONVERT_XML_TO_ENTRY); } }).start();
这里debug发现 entrylist是有值的 size为15
private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what){ case CONVERT_XML_TO_ENTRY: List<Entry> list = msg.getData().getParcelableArrayList("list"); if (list != null && list.size() != 0) { if (adapter == null) { adapter = new RssReaderAdapter(); } adapter.setList(list); } setProgressBarIndeterminateVisibility(false); break; default: break; } } };
到这里就取不到值了
最后发现是因为下面这个地方写的有问题
Message msg = Message.obtain(); msg.getData().putParcelableArrayList("list",entryList); mHandler.sendEmptyMessage(CONVERT_XML_TO_ENTRY);
sendEmptyMessage,噢 卖糕的。。。。如此低级的错误,写代码还是得小心谨慎,细心
改为sendMessage 一切正常了