2016-07-29 270 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'。我不知道它是如何到達那裏的,但它到達了那裏(這就是錯誤告訴你的)。 –

相關問題