Nous avons reçu les demandes suivantes des utilisateurs de l'application KUMIWAKE que j'ai développée.
Je l'utilisais normalement, mais lorsque j'essaye de sélectionner ou de grouper des membres, j'obtiens le message "Kumiwake sera fermé en raison d'un problème". Que devrais-je faire?
Pour une raison quelconque, il y a eu de nombreux plantages dans la dernière version, donc ces avis sont vraiment utiles.
Cependant, il y a un problème ici. Je ne peux pas reproduire l'erreur dans mon environnement. Ni la machine réelle ni l'AVD.
En regardant la trace de pile de la Play Console, c'était comme suit.
java.lang.IllegalStateException:
at android.database.CursorWindow.nativeGetString (CursorWindow.java)
at android.database.CursorWindow.getString (CursorWindow.java:438)
at android.database.AbstractWindowedCursor.getString (AbstractWindowedCursor.java:51)
...
Quand je l'ai recherché, cela ressemblait à une erreur due au curseur de la base de données.
Cela semblait fonctionner avant, j'ai donc examiné l'historique des modifications de la partie Cursor et j'ai réussi à identifier la cause.
c.getString (c.getColumnIndex (COL_NAME))
← Cette partie
https://codeday.me/jp/qa/20190421/668862.html
Il semble que getColumnIndex (COL_NAME)
n'a pas pu trouver l'index de COL_NAME et a renvoyé -1 comme dans cette réponse. Cela donne c.getString (-1)
et la colonne est introuvable! Vous avez dit une erreur. (Le numéro de colonne est 0 ~)
Pour le moment, je me suis installé dans le sens de ne pas utiliser getColumnIndex ()
. (Je veux vraiment l'utiliser ...)
Avant modification: c.getString (c.getColumnIndex (COL_NAME))
Après modification: c.getString (1)
J'ai spécifié le numéro de colonne directement. Il semble que cela a fonctionné normalement après la correction. Je suis heureux.
Si vous voulez utiliser getColumnIndex (COL_NAME)
, -1 sera renvoyé lorsque la colonne n'est pas trouvée, il est donc préférable d'utilisergetColumnIndexOrThrow (COL_NAME)
comme dans [cet article] [1]. C'est vrai.
https://teratail.com/questions/128793
Quelqu'un souffrait d'un problème similaire. Comme vous pouvez le voir dans cette question, il semble que getColumnIndex ()
puisse ou non retourner une bonne valeur en fonction du terminal. Cela ne dépendait pas de la version d'Android, alors c'est peut-être un problème d'appareil ...
Si vous connaissez SQLite, apprenez-moi s'il vous plaît. (Pleurs)
Android Developers [Branche de Yuki Android: résumé de l'API Cursor] [1] [1]:http://yuki312.blogspot.com/2012/03/androidcursorapi.html
Recommended Posts