Parcelable传值崩溃问题

 由于实体类intent传递我几乎都用Serializable而没怎么用过Parcelable,今天碰到一个崩溃问题

传值的地方

  Intent intentPerson = new Intent();
                intentPerson.putExtra("uuid", sfuuid);
                if (null != person) {
                    intentPerson.putExtra("person", person);
                }
                intentPerson.setClass(context, BasicInfoInputActivity.class);
                startActivity(intentPerson);

接收的地方

  Intent intent = getIntent();
        if (intent != null) {
            temp = intent.getStringExtra("temp");
            if ("InfoListActivity".equals(temp)) {
                Log.d(TAG, "InfoListActivity编辑回显身份证号码" + intent.getStringExtra("card"));
                String card = intent.getStringExtra("card");
                uuid = intent.getStringExtra("uuid");
                if (!StringConstant.ONLINE) {
                    person = intent.getParcelableExtra("person");
 FATAL EXCEPTION: main
                                                                          Process: com.sunthink.healthrecords, PID: 1881
                                                                          java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sunthink.healthrecords/com.sunthink.healthrecords.activity.BasicInfoInputActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@39f00385: Unmarshalling unknown type code 6553705 at offset 888
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                                                                              at android.app.ActivityThread.access$800(ActivityThread.java:151)
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                              at android.os.Looper.loop(Looper.java:135)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                                              at java.lang.reflect.Method.invoke(Method.java:372)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)
                                                                           Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@39f00385: Unmarshalling unknown type code 6553705 at offset 888
                                                                              at android.os.Parcel.readValue(Parcel.java:2228)
                                                                              at android.os.Parcel.readArrayMapInternal(Parcel.java:2485)
                                                                              at android.os.BaseBundle.unparcel(BaseBundle.java:221)
                                                                              at android.os.BaseBundle.getInt(BaseBundle.java:794)
                                                                              at android.content.Intent.getIntExtra(Intent.java:5091)
                                                                              at com.sunthink.healthrecords.activity.BasicInfoInputActivity.onCreate(BasicInfoInputActivity.java:407)
                                                                              at android.app.Activity.performCreate(Activity.java:6033)
                                                                              at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                              at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                              at android.os.Looper.loop(Looper.java:135) 
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                              at java.lang.reflect.Method.invoke(Native Method) 
                                                                              at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) 
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697) 

保存原因就是intent传值的时候如果用Parcelable+别的数据的时候必须用bundle,不然就会报以上的错误

 

当然Parcelable传值崩溃还有可能是读写顺序的问题,好在现在有一键生成的插件这个问题也就不复存在了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章