簡體   English   中英

java.lang.ClassCastException-同一對象-兩個類,為什么?

[英]java.lang.ClassCastException - Same Object - Two classes, why?

我正在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列表最初是如何構造的,但是錯誤顯然不在您發布的代碼中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM