20

Tôi đang gặp sự cố khi tạo bộ hẹn giờ trong thiết bị ghi chú samsung 2 với lollipop 5.0. Trường hợp ngoại lệ là:Sự cố DatePicker trong samsung với android 5.0

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) 

Tôi đã sử dụng các ví dụ được cung cấp trong chính thức trang thu 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 

    } 
} 

Tôi gọi nó là như thế này:

DialogFragment newFragment = new DatePickerFragment(); 
newFragment.show(getFragmentManager(), "datePicker"); 

Trong các thiết bị khác hoạt động tốt .

Tôi cũng đã thử tạo bố cục của riêng mình bằng một số DatePicker trong đó, thực sự đơn giản nhưng cũng bị treo. Đây có phải là lỗi Android nào đó không?

+1

Đó là lỗi trong phiên bản Lollipop của Samsung không có trong AOSP. Bạn sẽ cần liên hệ với bộ phận hỗ trợ của Samsung. – alanv

+1

Tôi mặc dù proguard cfg đã giải quyết nó nhưng nó vẫn bị treo. Vấn đề là trong phong cách Theme.AppCompat cho Samsung Note3 chỉ. Độ phân giải của tôi là thay đổi kiểu DatePicker 'DatePickerDialog dpd = new DatePickerDialog (getActivity(), R.style.MyDatePicker, this, year, month, day); ' –

+0

Hi @vilson bạn có thể giải thích R.style.MyDatePicker một chút không hơn? Bạn đã đặt gì vào đó? Cảm ơn! –

Trả lời

1

Quên về bộ chọn ngày được tích hợp sẵn. Chỉ có một cách để loại bỏ sự cố: sử dụng thư viện cung cấp triển khai độc lập.

Đối với một đoạn bảng chọn ngày: https://github.com/flavienlaurent/datetimepicker

Đối với một widget bảng chọn ngày: https://github.com/SingleCycleKing/CustomTimePicker (đây là thêm một điểm khởi đầu hơn một ready-to-use-giải pháp)

+0

Làm thế nào bạn có thể chắc chắn rằng thư viện của bên thứ ba sẽ không sụp đổ? –

+0

Tôi đã thử nghiệm cả hai thư viện trên một thiết bị mà trình chọn ngày tích hợp bị lỗi. Ngoài ra, tôi đã phát hành ứng dụng của mình bằng cách sử dụng libs và đột nhiên các báo cáo sự cố dừng lại. Đây không phải là bằng chứng chính xác, nhưng tôi không nhận được bất kỳ sự cố nào do chính thư viện gây ra. Vâng, không bao giờ có một đảm bảo rằng libs nguồn mở sẽ không có lỗi ;-) – stefan222

0

Như alanv chú ý, đây là một lỗi triển khai Android 5 của Samsung.

Tôi thiết lập chủ đề khác hiển thị bộ chọn ngày với các trình quay vòng (cũ hơn) thay vì chế độ xem lịch. Trong mã, tôi kiểm tra xem ứng dụng có đang chạy trên thiết bị samsung có kẹo và ngôn ngữ khác thì tiếng anh hay không và nếu có, tôi sẽ áp dụng chủ đề với người quay. Điều này hoạt động tốt và không có thư viện nào khác hoặc các hack khác cần thiết.

Nếu cần tôi có thể thêm chủ đề và cách áp dụng chủ đề cho câu trả lời này.

Các vấn đề liên quan