我在将 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");
最佳答案
来自 toArray(Array) 的文档
返回一个数组,其中包含此中包含的所有元素 {@code 数组列表}。如果指定的数组足够大以容纳 元素,使用指定的数组,否则使用相同的数组 类型被创建。如果指定的数组被使用并且比这个大 {@code ArrayList},集合元素后面的数组元素 设置为空。
那么在你的情况下发生了什么,你作为参数传递的数组
Long[] ItemId = sList.toArray(new Long[sList.size()]);
实际上,在那里创建的新 Long 包含您的数据,因为它有足够的空间来容纳它,并且返回的值为 null。
你应该做的是:
Long[] ItemId = new Long[sList.size()]);
sList.toArray(ItemId);
关于java - getLongArrayExtra 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19775510/