Android 三星安卓5.0版DatePicker崩溃
我在使用棒棒糖5.0在三星Note2设备中创建日期选择器时遇到问题。 例外情况是:Android 三星安卓5.0版DatePicker崩溃,android,exception,android-5.0-lollipop,samsung-mobile,android-datepicker,Android,Exception,Android 5.0 Lollipop,Samsung Mobile,Android Datepicker,我在使用棒棒糖5.0在三星Note2设备中创建日期选择器时遇到问题。 例外情况是: java.util.IllegalFormatConversionException: %d can not format java.lang.String arguments at java.util.Formatter.badArgumentType(Formatter.java:1489) at java.util.Formatter.transformFromInteger(Formatt
java.util.IllegalFormatConversionException: %d can not format java.lang.String arguments
at java.util.Formatter.badArgumentType(Formatter.java:1489)
at java.util.Formatter.transformFromInteger(Formatter.java:1689)
at java.util.Formatter.transform(Formatter.java:1461)
at java.util.Formatter.doFormat(Formatter.java:1081)
at java.util.Formatter.format(Formatter.java:1042)
at java.util.Formatter.format(Formatter.java:1011)
at java.lang.String.format(String.java:1803)
at android.content.res.Resources.getString(Resources.java:1457)
at android.content.Context.getString(Context.java:397)
at android.widget.SimpleMonthView$MonthViewTouchHelper.getItemDescription(SimpleMonthView.java:684)
at android.widget.SimpleMonthView$MonthViewTouchHelper.onPopulateNodeForVirtualView(SimpleMonthView.java:628)
at com.android.internal.widget.ExploreByTouchHelper.createNodeForChild(ExploreByTouchHelper.java:377)
at com.android.internal.widget.ExploreByTouchHelper.createNode(ExploreByTouchHelper.java:316)
at com.android.internal.widget.ExploreByTouchHelper.access$100(ExploreByTouchHelper.java:50)
at com.android.internal.widget.ExploreByTouchHelper$ExploreByTouchNodeProvider.createAccessibilityNodeInfo(ExploreByTouchHelper.java:711)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfVirtualNode(AccessibilityInteractionController.java:1179)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1091)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1087)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1087)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1087)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1087)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1087)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1087)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1087)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1087)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1087)
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchAccessibilityNodeInfos(AccessibilityInteractionController.java:888)
at android.view.AccessibilityInteractionController.findAccessibilityNodeInfoByAccessibilityIdUiThread(AccessibilityInteractionController.java:155)
at android.view.AccessibilityInteractionController.access$400(AccessibilityInteractionController.java:53)
at android.view.AccessibilityInteractionController$PrivateHandler.handleMessage(AccessibilityInteractionController.java:1236)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5944)
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:1389)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
我使用了android studio官方页面中提供的示例:
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
DatePickerDialog dpd = new DatePickerDialog(getActivity(), this,year, month, day);
return dpd;
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
// get the date here
}
}
我这样称呼它:
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
在其他设备中工作正常
我还尝试使用
日期选择器创建自己的布局,非常简单,但也会崩溃。这是安卓的错误吗?忘了内置的日期选择器吧。只有一种方法可以避免崩溃:使用提供独立实现的库
对于日期选择器片段:
对于日期选择器小部件:(这与其说是一个现成的解决方案,不如说是一个起点)正如alanv所注意到的,这是三星安卓5实现的一个缺陷
我设置了一个不同的主题,它显示带有(旧的)微调器的日期选择器,而不是日历视图。在代码中,我检查应用程序是否在三星设备上运行,该设备使用棒棒糖和英语以外的其他语言,如果是,我将使用微调器应用主题。这很好,并且没有其他库或其他必要的黑客
如果需要,我可以添加主题以及如何将其应用于此答案。正如Ridcully所说,这是三星5.0实现的一个问题
可以在此处找到解决建议。不幸的是,没有一个是最漂亮的
这是三星版棒棒糖中的一个缺陷,AOSP中没有。您需要联系三星支持部门。我认为proguard cfg解决了这个问题,但它仍然崩溃。问题出在仅适用于三星Note3的style-Theme.AppCompat中。我的决定是更改DatePicker的样式DatePickerDialog dpd=newDatePickerDialog(getActivity(),R.style.MyDatePicker,this,year,month,day)
Hi@vilson你能再解释一下R.style.MyDatePicker吗?你在里面放了什么?谢谢@AlexBlack#AAAAAA#000000@style/Title\u text\u 12dp 10sp
由于活动具有style主题,因此崩溃。AppCompat
@AlexBlack尝试过,但仍然崩溃,它显示日期选择器,然后崩溃如何确保第三方库不会崩溃?我已经在内置日期选择器崩溃的设备上测试了这两个库。另外,我使用libs发布了我的应用程序,突然崩溃报告停止了。这不是一个确切的证据,但我没有收到任何由库本身引起的崩溃。嗯,开源libs永远不能保证没有bug;-)