design: 'material' causes app to crash

Ouverte
#984 8 commentaires 4 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
android, javascript, react-native
Domaine
mobile

Piste de recherche

The report gives a reproducible call to DateTimePickerAndroid.open with design: 'material' and a crash trace naming MaterialDatePicker; it does not identify repository files or tests. Start by reading the Android implementation of the material design option and checking how the Expo config plugin sets the app theme. Done means the date picker opens in the reported Expo development build without the missing materialCalendarTheme crash.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Bug report

Summary

Setting the design property to material causes the app to crash upon opening the date picker.
Using Expo v53, datetimepicker v8.4.1
Included the @react-native-community/datetimepicker plugin both with no config and with some basic theming which works for the default picker. Running on an Expo development build.

Crash details:

java.lang.IllegalArgumentException: com.google.android.material.datepicker.MaterialDatePicker requires a value for the {bundle-identifier}:attr/materialCalendarTheme attribute to be set in your app theme. You can either set the attribute in your theme or update your theme to inherit from Theme.MaterialComponents (or a descendant).
  com.google.android.material.resources.MaterialAttributes.resolveTypedValueOrThrow(MaterialAttributes.java:72)
  com.google.android.material.resources.MaterialAttributes.resolveOrThrow(MaterialAttributes.java:89)
  com.google.android.material.datepicker.SingleDateSelector.getDefaultThemeResId(SingleDateSelector.java:162)
  com.google.android.material.datepicker.MaterialDatePicker.getThemeResId(MaterialDatePicker.java:266)
  com.google.android.material.datepicker.MaterialDatePicker.onCreateDialog(MaterialDatePicker.java:272)
  androidx.fragment.app.DialogFragment.prepareDialog(DialogFragment.java:930)
  androidx.fragment.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:844)
  androidx.fragment.app.Fragment.performGetLayoutInflater(Fragment.java:1755)
  androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:527)
  androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:272)
  androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1943)
  androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1845)
  androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782)
  androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:565)
  android.os.Handler.handleCallback(Handler.java:995)
  android.os.Handler.dispatchMessage(Handler.java:103)
  android.os.Looper.loopOnce(Looper.java:248)
  android.os.Looper.loop(Looper.java:338)
  android.app.ActivityThread.main(ActivityThread.java:9067)
  java.lang.reflect.Method.invoke(Native Method)
  com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)

Reproducible sample code

DateTimePickerAndroid.open({ value: dateToRender, onChange: handleDateChange, mode: 'date', design: 'material' });

Steps to reproduce

  1. Create an Expo dev build with an app that's using the datepicker library

  2. Set the datepicker to open programmatically, using DateTimePickerAndroid.open and provide the design: 'material' option

  3. Launch the app and open the datepicker

  4. npx react-native info output:

    info Fetching system and libraries information...
    System:
      OS: Windows 10 10.0.19045
      CPU: "(16) x64 AMD Ryzen 7 5800X 8-Core Processor             "
      Memory: 7.36 GB / 31.93 GB
    Binaries:
      Node:
        version: 24.1.0
        path: C:\nvm4w\nodejs\node.EXE
      Yarn: Not Found
      npm:
        version: 11.3.0
        path: C:\nvm4w\nodejs\npm.CMD
      Watchman: Not Found
    SDKs:
      Android SDK: Not Found
      Windows SDK: Not Found
    IDEs:
      Android Studio: Not Found
      Visual Studio: Not Found
    Languages:
      Java: Not Found
      Ruby: Not Found
    npmPackages:
      "@react-native-community/cli":
        installed: 18.0.0
        wanted: latest
      react:
        installed: 19.0.0
        wanted: 19.0.0
      react-native:
        installed: 0.79.3
        wanted: 0.79.3
      react-native-windows: Not Found
    npmGlobalPackages:
      "*react-native*": Not Found
    Android:
      hermesEnabled: Not found
      newArchEnabled: Not found
    iOS:
      hermesEnabled: Not found
      newArchEnabled: Not found
    

    Time zone name (If the problem you have is related to unexpected time / date. See list in https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).

Langage dominant
JavaScript
Étoiles
2.9k
Forks
459
Merge moyen
4 j 16 h
PR mergées (30 j)
5

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de react-native-datetimepicker/datetimepicker

Toutes les issues de react-native-datetimepicker/datetimepicker

Issues similaires

Plus d'issues JavaScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.