2016-07-29 22 views
0

私はアンドロイドスタジオ2.1.2で作業しています。java.lang.ClassCastException - 同じオブジェクト - 2つのクラス、なぜですか?

私は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);

私はキャストのエラーを取得:

によって引き起こさ

:java.lang.ClassCastExceptionが:com.example.luca.ireplace.orarioは

をcom.example.luca.ireplace.riparazioneにキャストすることはできません

私はバンドルの有無にかかわらず、すべてを試しましたが、クラス出力の出力は同じですか?そしてどうすれば解決できますか?

ありがとうございました

+0

クラスローダーのように見えます。別のクラスローダーで同じクラスがこの問題を受け取ります – Jens

答えて

1

あなたが投稿したコードにエラーはありません。リスト(および一般的にジェネリック)は型の削除に苦しんでいることに注意してください。つまり、NuovoをArrayList<riparazione>と宣言しても、実行時に、riparazioneをリストに追加するか、またはリストに実際にriparazioneが含まれているかどうかがチェックされません。

何とかorarioをリストに挿入しました。エラーが発生し、ここで:

riparazione dads = nuovo.get(9); 

我々はnuovoリストは元々構築されますどのようにないアイデアを持っていませんが、エラーはあなたが投稿したコードでは、明らかではありません。

+0

オブジェクトを追加する場合、riparazione:riparazione a1 = new riparazione(Strig a、String b、String c、String d)をnuovoに追加します。追加はOKです。 –

+0

はい、何とか 'nuovo'リストに' orario'があります。私はそれがどのようにそこにあるのかわかりませんが、それはそこにあります(エラーがあなたに伝えているのです)。 –

関連する問題