簡體   English   中英

Android 4.4 Intent.putExtra()和Intent.getExtra()無法正確投射

[英]Android 4.4 Intent.putExtra() and Intent.getExtra() cannot cast correctly

如果我在Android 6或5上運行此代碼,則會得到零錯誤,並且可以正常運行。

    //pass in a Date[] array 
    countdownServiceIntent.putExtra("timingsArray", timings);
    startService(countdownServiceIntent);//start the service

    //receive the array in another class (service class)
    protected void onHandleIntent(Intent intent)
    {
    try
    {   //get the Date[] array from the intent
        times = (Date[]) intent.getSerializableExtra("timingsArray");
    } 
    catch (Exception e)
    {
        e.printStackTrace();
        return;
    }


    }

如果我運行相同的代碼,則在運行任何版本的Android 4.0(已在4.4和4.2上測試)的手機上,都會收到java.lang.ClassCastException。 我想知道為什么會這樣嗎? 這個不成立。

我也已經在清單文件中聲明了我的服務類。

<service android:name=".CountDownService" android:enabled="true"/> 

這是我的堆棧跟蹤:

02-14 18:46:40.146: W/System.err(20047): java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.util.Date[]
02-14 18:46:40.146: W/System.err(20047):    at com.karimo.stopwatch.CountDownService.onHandleIntent(CountDownService.java:43)
02-14 18:46:40.146: W/System.err(20047):    at com.karimo.stopwatch.CountDownService.onStartCommand(CountDownService.java:69)
02-14 18:46:40.146: W/System.err(20047):    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2726)
02-14 18:46:40.146: W/System.err(20047):    at android.app.ActivityThread.access$2100(ActivityThread.java:144)
02-14 18:46:40.146: W/System.err(20047):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302)
02-14 18:46:40.146: W/System.err(20047):    at android.os.Handler.dispatchMessage(Handler.java:102)
02-14 18:46:40.146: W/System.err(20047):    at android.os.Looper.loop(Looper.java:136)
02-14 18:46:40.146: W/System.err(20047):    at android.app.ActivityThread.main(ActivityThread.java:5146)
02-14 18:46:40.146: W/System.err(20047):    at java.lang.reflect.Method.invokeNative(Native Method)
02-14 18:46:40.146: W/System.err(20047):    at java.lang.reflect.Method.invoke(Method.java:515)
02-14 18:46:40.146: W/System.err(20047):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
02-14 18:46:40.146: W/System.err(20047):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
02-14 18:46:40.146: W/System.err(20047):    at dalvik.system.NativeStart.main(Native Method)

android處理傳遞可序列化的額外數組的方式已經從棒棒糖改變了。 在4.4 Kitkat上,是否要額外傳遞數組,這應該可以工作。

Object[] array = (Object[]) getIntent().getSerializableExtra("key");

User[] parsedArray = Arrays.copyOf(array, array.length, User[].class);

我在這里找到此方法: 鏈接

暫無
暫無

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

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