我有以下代码: 在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);
然而我对所有人都是空的。什么可能是错的?
答案 0 :(得分:0)
Bundle类具有传递和检索双精度数组的方法:
- void putDoubleArray(String, double[])
- double [] getDoubleArray(String)
答案 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循环以从列表复制到数组。