1

在将 List 转换为 long 类型的数组并尝试在 List 类中检索后,我正在发送 ItemId,但它的值为 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");
4

2 回答 2

3

来自 toArray(Array) 的文档

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

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

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

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

你应该做的是:

Long[] ItemId = new Long[sList.size()]);
sList.toArray(ItemId);
于 2013-11-04T19:44:12.790 回答
1

已修复:我发现它为空的原因。原因是类型是 Long 而我们正在寻找“long”。为了解决这个问题,我需要将其转换为原始数据类型 long。

于 2013-11-04T21:45:31.537 回答