我在将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");
答案 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)
固定:我发现了它为空的原因。原因是当我们寻找“长”时,类型是长的。 为了解决这个问题,我需要将其转换为原始数据类型。