getLongArrayExtra返回null

时间:2013-11-04 19:30:10

标签: java android android-activity arraylist

我在将List转换为long类型的数组之后发送ItemId并尝试在List类中检索但它的值为null。在解码时,我可以看到正在发送的值,但getLongArrayExtra不起作用..

 List<Long> sList = new ArrayList<Long>();
 sList.add(1);
 sList.add(2);
 Long[] ItemId = sList.toArray(new Long[sList.size()]);
      Intent iIntent = new Intent(this, List.class);
      iIntent.putExtra("ITEM_ID", ItemId);

      startActivity(iIntent);


  final Intent intent = getIntent();
  long[]ItemIdList = intent.getLongArrayExtra("ITEM_ID");

2 个答案:

答案 0 :(得分:3)

来自toArray(数组)的文档

返回一个包含此包含的所有元素的数组 {@code ArrayList}。如果指定的数组足够大以容纳 元素,使用指定的数组,否则使用相同的数组 类型已创建。如果使用指定的数组且大于此数组 {@code ArrayList},集合元素后面的数组元素 设置为null。

所以在你的情况下发生了什么,你传递的数组作为

中的参数
Long[] ItemId = sList.toArray(new Long[sList.size()]);

实际上,在那里创建的新Long包含您的数据,因为它有足够的空间来容纳它,并且返回的值为null。

你应该做的是:

Long[] ItemId = new Long[sList.size()]);
sList.toArray(ItemId);

答案 1 :(得分:1)

固定:我发现了它为空的原因。原因是当我们寻找“长”时,类型是长的。 为了解决这个问题,我需要将其转换为原始数据类型。