通过intent传递Double数组传递null

时间:2016-10-06 21:58:11

标签: android

我有以下代码: 在TrackerActivity中

ArrayList<Double> latitudes;
ArrayList<Double> longitudes;
ArrayList<Double> altitudes;

...

Intent intent = new Intent(this, SummaryActivity.class);
intent.putExtra(LATITUDES_EXTRA, latitudes.toArray());
intent.putExtra(LONGITUDES_EXTRA, longitudes.toArray());
intent.putExtra(ALTITUDES_EXTRA, altitudes.toArray());
startActivity(intent);

并在SummaryActivity中:

latitudes = getIntent().getDoubleArrayExtra(TrackerActivity.LATITUDES_EXTRA);
longitudes = getIntent().getDoubleArrayExtra(TrackerActivity.LONGITUDES_EXTRA);
altitudes = getIntent().getDoubleArrayExtra(TrackerActivity.ALTITUDES_EXTRA);

然而我对所有人都是空的。什么可能是错的?

3 个答案:

答案 0 :(得分:0)

Bundle类具有传递和检索双精度数组的方法:

 - void putDoubleArray(String, double[])
 - double [] getDoubleArray(String)

可能是this ans will help you

答案 1 :(得分:0)

尝试一下:

<强> TrackerActivity

Intent intent = new Intent(this, SummaryActivity.class);
intent.putExtra(LATITUDES_EXTRA, latitudes);
intent.putExtra(LONGITUDES_EXTRA, longitudes);
intent.putExtra(ALTITUDES_EXTRA, altitudes);
startActivity(intent);

<强> SummaryActivity

latitudes = getIntent().getExtras().getParcelableArrayList(TrackerActivity.LATITUDES_EXTRA);
longitudes = getIntent().getExtras().getParcelableArrayList(TrackerActivity.LONGITUDES_EXTRA);
altitudes = getIntent().getExtras().getParcelableArrayList(TrackerActivity.ALTITUDES_EXTRA);

为什么这样做? 由于一个名为autoboxing的功能,Oracle从原语到对象的转换是微不足道的,Oracle的当前文档中写道:

  
    

Autoboxing是Java编译器在基元类型和相应的对象包装类之间进行的自动转换。例如,将int转换为Integer,将double转换为Double,依此类推。如果转换采用另一种方式,则称为拆箱。

  

答案 2 :(得分:-1)

您需要将每个ArraryList<Double>转换为double[]。问题是ArraryList.toArray()会返回Double[]。您可以将列表声明为数组开头,也可以写一点for循环以从列表复制到数组。