我正在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
列表的,但是错误显然不在您发布的代码中。