bsa*_*ara 2 android timepicker android-preferences numberpicker android-timepicker
我做了一个自定义DialogPreference,它使用两个NumberPicker小部件,允许用户选择一天中的一小时以及另一个DialogPreference允许用户使用TimePicker小部件选择时间的自定义.
只要对话框未打开并且我旋转屏幕,一切都按预期工作.但是,如果对话框打开并且屏幕旋转,则整个应用程序崩溃.我已经在onSaveInstanceState和onRestoreInstanceState方法中放置了断点,并且已经验证了恢复所需的所有内容都是DialogPreference有序的,onDialogClosed每次都会使用我自定义中的所有其他自定义代码来触发该方法DialogPreference.
我正在建设以下内容:
我正在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)
Run Code Online (Sandbox Code Playgroud)
我在这里找到了解决此问题的方法:https://code.google.com/p/android/issues/detail?id = 22754#c5,其中说明如下:
在onCreate方法中,在findviewbyId之后为时间选择器添加以下内容:
tp.setSaveFromParentEnabled(false);
tp.setSaveEnabled(true);
Run Code Online (Sandbox Code Playgroud)
这摆脱了错误.但是,对话框不会保持打开状态.但这似乎是所有非自定义偏好的默认功能,所以我很满意.
以下是上面使用的两种方法的文档:
以下是我发布的最终工作自定义首选项的要点:
| 归档时间: |
|
| 查看次数: |
2653 次 |
| 最近记录: |