我正在android Studio 2.1.2中工作。

我在两个活动之间有一个神秘的演员例外。

在第一个活动中,我有这个ArrayList:

 ArrayList<riparazione> nuovo = notizia.get_Elenco();


我将arraylist(parcellable)插入捆绑包中,以便在另一个活动中发送:

     Intent intent = new Intent(prenota_mostra_cellulari.this, prenota_mostra_dettagli.class);

                Bundle spedizione = new Bundle();
                    spedizione.putString("Nome",notizia.get_Marca());
                    spedizione.putString("Foto",notizia.get_Foto());
                    spedizione.putString("Marca",notizia.get_Nome());
                    spedizione.putParcelableArrayList("Riparazioni",nuovo);

                   intent.putExtras(spedizione);
                   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


在第二个活动中,我将其用于恢复ArrayList

  ArrayList<riparazione> nuovo = new ArrayList<>();

    Intent intent = getIntent();
    if (null != intent) {
        dati_cel = intent.getExtras();
        nuovo = dati_cel.getParcelableArrayList("Riparazioni");

        Log.d("Dati", String.valueOf(dati_cel.size()));
        Log.d("Dati arraylist", String.valueOf(dati_cel.size()));
        riparazione dads = nuovo.get(9);
    }


现在符合riparazione dads = nuovo.get(9);

我收到一个Cast错误:


由以下原因引起:java.lang.ClassCastException:com.example.luca.ireplace.orario无法转换为com.example.luca.ireplace.riparazione


我已经尝试了所有方法,无论是否使用Bundle进行发送,类输出的最终输出为何都与此相同?而我该如何解决?

谢谢你的帮助

最佳答案

该错误不在您发布的代码中。请记住,列表(通常是泛型)会遭受类型擦除。这意味着即使您将nuovo声明为ArrayList<riparazione>,Java在运行时也不会检查是否将riparazione添加到列表中,或者在传递时列表中是否实际上包含riparazione

您以某种方式将orario插入到列表中。错误发生在这里:

riparazione dads = nuovo.get(9);


我们不知道最初是如何构造nuovo列表的,但是错误显然不在您发布的代码中。

07-26 00:44