通过意图传递ArrayList <double>

时间:2018-07-30 15:43:53

标签: java android

我在将ArrayList传递到Android Studio中的另一个活动时遇到问题。

我创建了一个ArrayList,该数据类型为Double。该程序应阅读并在控制台中打印。

这是第一个活动的代码:

 Intent intent = new Intent(this, ergebnisse.class);
 intent.putExtra("WLTP_list", Wlist);
 startActivity(intent); 

这是第二个活动的代码:

Bundle bundle = getIntent().getExtras();
ArrayList<Double> Wlist = (ArrayList<Double>) bundle.getDoubleArray("WLTP_list");

最后一个等号后的部分标记为红色,错误为:

Inconvertible types; cannot cast 'double[]' to 'Java.util.ArrayList<Java.lang.Double>' 

我没有更改类型,所以我不知道为什么它会给我这个错误。

4 个答案:

答案 0 :(得分:1)

您正在调用bundle.getDoubleArray(),它返回一个数组而不是ArrayList,这就是为什么在尝试将double []数组转换为ArrayList时收到错误的原因。

答案 1 :(得分:1)

getDoubleArray()方法返回类型为double []的数组,该数组不能显式转换为ArrayList。如果您真的想将其用作ArrayList,则需要获取double []数组并将其显式转换为ArrayList。例如,类似

 ArrayList<Double> Wlist = ArrayList<Double>(Arrays.asList( bundle.getDoubleArray("WLTP_list")));

答案 2 :(得分:0)

请在第二个活动中尝试以下代码:

ArrayList<Double> Wlist = (ArrayList<Double>) getIntent().getSerializableExtra("WLTP_list");

您正在使用的当前方法返回数据类型为Array的{​​{1}},而不是Double。我提供的代码应该给您一个ArrayList

如果该行不起作用,您可以随时查看this的答案。

答案 3 :(得分:0)

尝试这种方式。

第一个活动:

 Intent intent = new Intent(this, SecondActivity.class);
    ArrayList<Double> listDouble = new ArrayList<Double>();
    listDouble.add(1.0);
    listDouble.add(2.0);
    intent.putExtra("WLTP_list", listDouble);
    startActivity(intent);

第二活动:

    ArrayList<Double> listDouble = (ArrayList<Double>) getIntent().getSerializableExtra("WLTP_list");
System.out.println("Return.." + listDouble);