您的位置:首页 > 其它

Handler 接收Parcelable ArrayList时返回空的错误

2016-03-30 22:10 260 查看
遇到一个问题,从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 一切正常了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: