java - getLongArrayExtra 返回 null

标签 java android android-activity arraylist

我在将 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/

相关文章:

android - Android 中强制关闭

java - 使用代码块创建共享对象?

java - 如何将 JSON 字符串转换为带有属性的 xml?

java - Selenium服务器并行测试错误: invalid session id

java - 在同一虚拟机内切换 WAL 使用?

android-activity - Activity 图中的模型参数化 API 调用

java - Android 中倒计时器时间与实际时间之间的差异?

android - 当我添加一个新字段时,我得到一个空指针

android - 修复 Android 相机帧率

java - Android Activity 流程 - 从基父类(super class)到子类再到基类