我有一個Parcelable類,它的數據成員由字符串,整數,布爾值,日期組成,以及由相同類型的東西組成的其他Parcelable對象。儘管如此,樹的末尾只有字符串,整數,布爾值和日期(java.util.Date)。
我有一個@EActivity
與@Extra
被稱爲entity
這是這些Parcelable對象之一。
我有一個@EFragment
與@FragmentArg
也稱爲entity
以及。當我啓動活動時,我將entity
一起傳遞給Activity,並在onCreate
中將活動傳遞給該片段。
不過,我得到這個奇怪的例外,那是沒有意義的:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.app/
com.my.app.NavControllerActivity_}: java.lang.IllegalArgumentException:
is not a constant in android.text.Layout$Alignment
我的價值觀都沒有什麼關係android.text.Layout
,他們都只是java.lang.String
對象。
我把整個堆棧跟蹤以下,但如果它離開我的代碼點是在這裏由Android註釋產生的NavControllerActivity_
代碼:
private void injectExtras_() {
Bundle extras_ = getIntent().getExtras();
if (extras_!= null) {
if (extras_.containsKey(ENTITY_EXTRA)) { // THIS CALL EVENTUALLY LEADS TO THE EXCEPTION
this.entity = extras_.getParcelable(ENTITY_EXTRA);
}
if (extras_.containsKey(ROOT_FRAGMENT_CLASS_EXTRA)) {
this.rootFragmentClass = ((Class) extras_.getSerializable(ROOT_FRAGMENT_CLASS_EXTRA));
}
if (extras_.containsKey(ROOT_FRAGMENT_NAME_EXTRA)) {
this.rootFragmentName = extras_.getString(ROOT_FRAGMENT_NAME_EXTRA);
}
}
setupViews();
}
這裏是我開始練習:
NavControllerActivity_.intent(this)
.rootFragmentClass(EditAnimalFragment_.class)
.entity(entity)
.start();
以下是完整的堆棧跟蹤:
FATAL EXCEPTION: main
Process: com.my.app, PID: 30978
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.app/com.my.app.NavControllerActivity_}: java.lang.IllegalArgumentException: is not a constant in android.text.Layout$Alignment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalArgumentException: is not a constant in android.text.Layout$Alignment
at java.lang.Enum.valueOf(Enum.java:200)
at android.text.Layout$Alignment.valueOf(Layout.java:2017)
at android.text.style.AlignmentSpan$Standard.<init>(AlignmentSpan.java:33)
at android.text.TextUtils$1.createFromParcel(TextUtils.java:711)
at android.text.TextUtils$1.createFromParcel(TextUtils.java:689)
at android.os.Parcel.readCharSequence(Parcel.java:1659)
at android.os.Parcel.readValue(Parcel.java:2261)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2592)
at android.os.BaseBundle.unparcel(BaseBundle.java:221)
at android.os.BaseBundle.containsKey(BaseBundle.java:269)
at com.my.app.NavControllerActivity_.injectExtras_(NavControllerActivity_.java:87)
at com.my.app.NavControllerActivity_.init_(NavControllerActivity_.java:46)
at com.my.app.NavControllerActivity_.onCreate(NavControllerActivity_.java:39)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
你確定實體只包含字符串嗎?從stracktrace看來,似乎有一個SpannableString的反序列化出錯了。 – WonderCsabo
我將檢查所有包含的Parcelable對象,但是如果在那裏有一個SpannableString,它必須來自除我之外的其他地方。我使用ormlite從數據庫讀取數據到我的對象中,但對於我來說,ormlite會發回SpannableStrings似乎很瘋狂。 –