簡體   English   中英

為什么我只能在 Android 4 中得到 java.lang.Object[] cannot be cast to java.lang.String[][] 錯誤?

[英]Why do I get a java.lang.Object[] cannot be cast to java.lang.String[][] error only in Android 4?

我的意思是,我理解錯誤,但我在 Android Lollipop 或 Marshmallow 上都沒有看到錯誤,只有在 KitKat 上才看到錯誤。

我通過一個意圖從一個活動向另一個活動發送一個二維數組,如下所示:

String[][] bidimensionalArray = new String[3][3];

public void switchActivity(MenuItem item) {
    Intent intent = new Intent(this, myActivity.class);
    intent.putExtra("bidimensionalArray", bidimensionalArray);
    startActivity(intent);
}

而且,在接收活動中,我這樣做:

bidimensionalArray = (String[][]) getIntent().getSerializableExtra("bidimensionalArray");

同樣,這在 Android 5 和 6 上完美運行,但在 Android 4 上出錯。

從 Lollipop 開始,序列化發生了什么變化?

很明顯,這是 Android 4 中的一個尚未修復的錯誤。 為了記錄,我是在 Android 4.3.1 上嘗試這個的。

我通過將數組作為Object[]數組並將其復制到String[][]數組中來解決這個問題,如下所示在接收活動中:

private Object[] arrayDataObject;
private String[][] arrayData;

arrayDataObject = (Object[]) getIntent().getSerializableExtra("myArray");
arrayData = Arrays.copyOf(arrayDataObject,arrayDataObject.length,String[][].class);

暫無
暫無

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

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