2016-07-29 46 views
0

我正在android studio 2.1.2中工作。java.lang.ClassCastException - 相同对象 - 两个类,为什么?

我有两个活动之间的神秘转换异常。

在所述第一活动我有此ArrayList:

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

我插入在束中的数组列表(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);

我得到一个演员错误:

造成的:java.lang.ClassCastException:com.example.luca.ireplace.orario不能转换到com.example.luca.ireplace.riparazione

我已经试过一切,有和没有Bundle发送,类输出结束输出是相同的,为什么这个铸造?我该如何解决?

感谢任何帮助

+0

看起来像一个类加载器问题。在不同的类加载器上的相同类得到这个问题 – Jens

回答

1

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

您以某种方式在列表中插入了orario。出现该错误的位置:

riparazione dads = nuovo.get(9); 

我们不知道的nuovo名单最初如何被构建的,但错误显然不是在你发布的代码。

+0

如果我添加一个对象riparazione:riparazione a1 =新riparazione(Strig a,字符串b,字符串c,字符串d)在nuovo。添加是好的。 –

+0

是的,但不知何故'nuovo'列表中有一个'orario'。我不知道它是如何到达那里的,但它到达了那里(这就是错误告诉你的)。 –

相关问题