有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过意图传递ArrayList<Double>

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

我创建了一个保存数据类型DoubleArrayList。程序应该读取它并在控制台中打印它

这是第一个活动中的代码:

 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) 个答案

  1. # 1 楼答案

    试着这样做

    第一项活动:

     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);
    
  2. # 2 楼答案

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

     ArrayList<Double> Wlist = ArrayList<Double>(Arrays.asList( bundle.getDoubleArray("WLTP_list")));
    
  3. # 3 楼答案

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

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

    当前使用的方法返回数据类型为DoubleArray,而不是ArrayList。我提供的代码应该给您一个ArrayList

    如果那行不行,你可以随时查看this答案

  4. # 4 楼答案

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