我做了一个自定义DialogPreference
,它在其上使用两个NumberPicker
小部件以允许用户选择一天中的一个小时,以及另一个DialogPreference
允许用户使用TimePicker
小部件选择一天中的时间的自定义。
只要对话框没有打开并且我旋转屏幕,一切都会按预期进行。但是,如果对话框打开并且屏幕旋转,那么整个应用程序就会崩溃。我在onSaveInstanceState
andonRestoreInstanceState
方法中放置了断点,并验证了恢复所需的一切都是DialogPreference
有序的,该onDialogClosed
方法甚至每次都与我在 custom 中的所有其他自定义代码一起被命中DialogPreference
。
我正在构建以下内容:
- 最低 SDK:16
- 目标 SDK:20
- 编译SDK:20
- 构建工具:20.0.0
发生这种情况时,我正在 Verizon Galaxy Nexus 上运行 Android 4.4.3 (KitKat)。
这是给出的堆栈跟踪:
java.lang.IndexOutOfBoundsException: setSpan (4 ... 4) ends beyond length 0
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1016)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:592)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:588)
at android.text.Selection.setSelection(Selection.java:76)
at android.widget.EditText.setSelection(EditText.java:87)
at android.widget.NumberPicker$SetSelectionCommand.run(NumberPicker.java:2123)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(NativeStart.java)