以前只是用intent传递一些简单的值,最近传递list集合时发现值总是传不过去,logcat报如下错误

说的是不能处理值为null的情况,回过头看list集合时确实发现有value为null的key,这样问题就简单了,把value为null的

key给移除就可以了。

ArrayList<Map<String, Object>> list=new ArrayList<Map<String,Object>>();//list为要传递的集合
Map<String, Object> temMap = list.get(0);
List<String> keys=new ArrayList<String>(temMap.keySet());
for(String key:keys){
Object value=temMap.get(key);
if(value.equals(null)){
temMap.remove(key);
}
}
intent.putExtra("data", list);
// intent.putParcelableArrayListExtra("data", (ArrayList<? extends Parcelable>) list);

这样处理之后list集合就可以成功传递了。

最后顺便说下intent传递list集合的两种方法

一、用intent.putExtra("data", list)形式,查看源码可以发现ArrayList是实现了Serializable这个接口的

取值的时候用intent.getSerializableExtra("data")就可以了。

二、用intent.putParcelableArrayListExtra("data", (ArrayList<? extends Parcelable>) list)这用形式。

取值的时候用如下方式:

List<? extends Parcelable> temlist = (ArrayList<? extends Parcelable>)intent.getParcelableArrayListExtra("data");
List<Map<String, Object>> list=(List<Map<String, Object>>) temlist;

总的来说第二种方法过于繁琐,推荐使用第一种。

Intent传递list集合时异常解决的更多相关文章

  1. 解决spring 事务管理默认不支持SQLException等运行时异常

    公司同事在定位一个bug时,发现spring默认的事务只支持运行时异常的回滚,对于像SQLException这样的非运行时异常,默认的事务机制不能处理,于是找了下解决的办法:    1.在捕获SQLE ...

  2. Intent传递简单对象与集合

    我们在Intent传递传递对象.能够有三种方式,实现Serializable接口.实现Parcelable接口,使用json格式序列化与反序列化. 在此我们使用第二方式,现实Parcelable接口, ...

  3. Activity之间使用intent传递大量数据带来问题总结

    转载:大飞 http://blog.csdn.net/rflyee/article/details/47441405   Activity之间使用Parcel传递大量数据产生的问题. Activity ...

  4. 【转】Android 之最新最全的Intent传递数据方法

    原文地址:https://www.jianshu.com/p/1169dba99261 intent传递数据 为什么要和intent单独拿出来讲,因为Intent传递数据也是非常重要的 一.简单的传递 ...

  5. OllyICE 调试的程序无法处理异常 解决方法

    问题描述 在用OllyICE打开可执行文件时出现如下图所示错误 解决方法 1. 选项 -> 调试设置 , 打开调试选项 2. 切换到 异常 页签 3. 取消勾选 忽略(传递给程序)以下异常: 单 ...

  6. Android Intent传递数据

    刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据. 我们利用显示的方式进行Intent的启动. 1.启动intent并输入数据. Intent intent=new In ...

  7. Intent传递数据全解

    概述 之前的博文也有介绍,查看-->用户界面开发基础 这里单独抽取出来,更加具体的记录一下,事实上主要是API的使用. Intent传递简单数据 能够以直接通过调用Intent的putExtra ...

  8. (1)Map集合 (2)异常机制 (3)File类 (4)I/O流

    1.Map集合(重点)1.1 常用的方法 Set<Map.Entry<K,V>> entrySet() - 用于将Map集合转换为Set集合. 其中Map.Entry<K ...

  9. Java : java基础(2) 集合&正则&异常&File类

    Obj 方法: hashCode() 返回内存地址值, getClass() 返回的时运行时类, getName() 返回类名, toString() 把名字和hashCode() 合在一起返回,如果 ...

随机推荐

  1. mysql出现ERROR 1366 (HY000):的解决办法

    今天向新建的表中添加内容,出现以下错误: mysql> INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_sho ...

  2. [转]C#的扩展方法解说

    C#的扩展方法解说 扩展方法的目的就是为一个现有类型添加一个方法,现有类型既可以是int,string等数据类型,也可以是自定义的数据类型. 为数据类型的添加一个方法的理解:一般来说,int数据类型有 ...

  3. DataTime 和 时间转化

    如果知道tostring 的字符串格式那么可以根据字符串格式转化成 DateTime string timeText = DateTime.Now.ToString("yy/MM/dd HH ...

  4. 使用DUILIB建立项目

    使用DUILIB加载XML界面 这篇主要目的就是教给大家怎样在自己的工程中加载XML界面,这是最基本的应用,对于界面控件响应啥的,我就不讲了,在大家懂了这个之后,我会给大家一个其它人写的博客,再看他的 ...

  5. JS的高阶函数

    JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数. 这就是最简单的高阶函数啦 functio ...

  6. 项目接入即时聊天客服系统(环信系统)PHP后端操作

    环信工作原理: 一.由于环信没有直接的接口来主动调取本项目中的用户数据,所有用户信息必须在环信服务器上注册对应信息成为环信的用户:(这样才能当用户进入聊天时显示其基本信息,如:名称.昵称.电话.邮箱等 ...

  7. 菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表ngx_chain_t[转]

    菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表 ngx_chain_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.c ...

  8. Android基础控件单选按钮RadioButton和Checkbox复选按钮的使用

    1.相关简介 RadioButton需要和RadioGroup结合使用,在RadioGroup设置布局方式! Checkbox是单独使用,本文为了方便放在了RadioGroup中! 2.简单使用 方法 ...

  9. type 命令

    type 显示属于那种类型

  10. ES6之主要知识点(九)Set和Map

    1.Set ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); ...