簡體   English   中英

使用android 5.0在三星中崩潰的DatePicker

[英]DatePicker crash in samsung with android 5.0

我在使用棒棒糖5.0在三星note 2設備中創建一個日期選擇器時遇到了麻煩。 例外是:

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工作室頁面中提供的示例:

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");

在其他設備工作正常。

我也嘗試使用DatePicker創建自己的布局,非常簡單但也崩潰了。 這是一些Android漏洞嗎?

正如Ridcully所說,這是三星5.0實施的一個問題

可以在此處找到解決方法建議。 不幸的是沒有一個是最漂亮的。

單擊時,DatePicker在我的設備上崩潰(使用個人應用程序)

忘掉內置的日期選擇器。 只有一種方法可以擺脫崩潰:使用提供獨立實現的庫。

對於日期選擇器片段: https//github.com/flavienlaurent/datetimepicker

對於日期選擇器小部件: https//github.com/SingleCycleKing/CustomTimePicker (這是一個起點而不是即用型解決方案)

正如alanv所注意到的,這是三星Android 5實施的一個錯誤。

我設置了一個不同的主題,用(較舊的)微調器顯示日期選擇器而不是日歷視圖。 在代碼中,我檢查應用程序是否在帶有棒棒糖和英語以外的語言的三星設備上運行,如果是,我將這個主題應用於微調器。 這很好用,沒有其他庫或其他必需的黑客。

如果需要,我可以添加主題以及如何將其應用於此答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM