我正在使用android Studio 2.1.2。
我在两个活动之间有一个神秘的演员异常。
在First Activity中我有这个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用于发送,类输出结束输出都是为什么这个转换?我该如何解决?
感谢您的帮助
答案 0 :(得分:1)
错误不在您发布的代码中。请记住,列表(通常是泛型)会遭受类型擦除。这意味着即使您将nuovo声明为ArrayList<riparazione>
,Java也不会在运行时检查是否要将riparazione
添加到列表中,或者当您传递它时列表是否实际包含riparazione
s 。
您以某种方式在列表中插入了orario
。错误发生在这里:
riparazione dads = nuovo.get(9);
我们不知道nuovo
列表最初是如何构建的,但错误显然不在您发布的代码中。