在Activity之间放置和获取DoubleArray值

时间:2014-04-01 10:58:19

标签: java android android-intent android-bundle

我有一个活动,其中从ResultSet检索值,并将它们存储在数组中:

flat[i] = rs.getDouble(3);
flng[i] = rs.getDouble(4);
i++;
Intent i = new Intent(MapID.this, map.class);
Bundle bundle=new Bundle();
bundle.putDoubleArray("Lat", flat);
bundle.putDoubleArray("Long", flng);
i.putExtras(bundle);
startActivity(i);

在另一个班级,我得到的值是:

Bundle bundle = getIntent().getExtras();
flat = bundle.getDoubleArray("Lat");

我想将值转换为String,如:

String xx = new Double(flat).toString();

3 个答案:

答案 0 :(得分:1)

在Java中,+运算符是为基元定义的。您可以执行String xx = "" + myDouble;

之类的操作

虽然建议使用这样的String方法:String xx = String.valueOf(myDouble);

答案 1 :(得分:1)

我不知道您想要将值转换为String的内容。如果要将单个双精度数转换为String,可以使用:

String.valueOf(double);

但我认为您需要将双数组的所有数字都更改为String,您可以使用:

Arrays.toString(double[]);

如果您需要将所有结果数据捆绑,您可以使用:

Bundle.putSparseParcelableArray(String key, SparseArray<? extends Parcelable> value);

SparseArray在android中非常有用。它喜欢java.util.Map,但键必须是整数。

答案 2 :(得分:0)

在数组的每个元素上使用String.valueOf并将其存储到另一个String数组中,如下所示:

double[] flat = bundle.getDoubleArray("Lat");
String[] flatAsStrings = new String[flat.length];

for (int i = 0; i < flat.length; i++) {
    flatAsStrings[i] = String.valueOf(flat[i]);
}

要简单地打印这些float值而不将其转换为字符串,您可以这样做:

double[] flat = bundle.getDoubleArray("Lat");
System.out.println(Arrays.toString(flat));

会打印类似的内容(取决于您的输入):

[1.0, 2.0, 3.0, 4.0, 5.0]