Android 三星安卓5.0版DatePicker崩溃

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

我在使用棒棒糖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(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;-)