Le code A provient des échantillons de facturation du projet, vous pouvez voir ICI .
Je pense que code A fort> p> " SELECT * de gold_status limite 1 " Code> Peut-être retourner aucun disque, je ne sais pas si
Fun Getgoldstatus (): Livetaa
3 Réponses :
code A est juste, car pas les données de la base de données sont renvoyées, mais un titulaire de la classe de données observable (LiveData), cela sera renvoyé même s'il n'y a pas d'enregistrement dans la table. Vous pouvez ensuite joindre un observateur à cet observable, l'observateur sera déclenché une fois que les modifications apportées à la base de données se produisent à W.R.T. Votre requête (vous pouvez trouver plusieurs exemples pour cela dans la documentation Android). La méthode getvalue () d'un objet Livetaa peut renvoyer NULL cependant, si aucune valeur n'a été définie, mais vous utilisez généralement des observateurs pour des changements de la LiveData. P>
Merci! Je pense que l'application provoquera lors de l'attribution de NULL à LiveTaA
Je ne suis pas un expert en matière de chambre et de sqlite sur Android. Mais je voudrais partager mes propres observations et constatations avec ce problème.
@ p.leibner est correct que Si vous regardez le code généré de DAO, vous verrez qu'il s'agit d'un code Java et qu'il retournera NULL s'il n'y a pas d'enregistrement correspondant à votre requête. Il n'y a pas non plus d'annotations qui aideraient Kotlin compilateur à vérifier la nullabilité. p> Par conséquent, Nous n'avons pas d'erreur de compilateur ni d'avertissements de peluches forts> si nous renvoyons l'objet non nul p> mais vous vont courir dans NullPointerExceptions au moment de l'exécution si vous n'avez pas de rangée dans la table et commencez à faire quelque chose avec cet objet si vous le marquez comme non null à Kotlin. P> Remarque: cela ne se produira pas Si vous retournez Je ne le savais pas jusqu'à ce que je rencontre ces problèmes. Peut-être que j'ai manqué quelques explications lors de l'apprentissage de la place. Nous devons simplement savoir que la pièce retournera objet ou null si vous interrogez une ligne unique et une liste ou une liste de vide si plusieurs lignes. P> Je préfère spécifier la nullabilité de la méthode de retour de la méthode DAO. De cette façon, j'écris un autre code qui fonctionne avec elle à Null Safe Way. P> J'appellerais celui-ci Code C STROND> P> livetata code> est renvoyé immédiatement et il n'est pas nul. Le contenu peut être null. P>
list
liveta
> code>. Il suffira de retourner une liste vide s'il n'y a pas de lignes correspondant. P>
// Runtime NullPointerException safe.
fun getGoldStatus(): LiveData<GoldStatus?>
// or
fun getGoldStatus(): GoldStatus?
Il n'y a pas beaucoup à dire.
Vous recevrez aller avec p> Ce sera beaucoup plus sûr dans tous les cas . (La chambre avec Livadata est toujours une combinaison très buggy) p> espère que cela aide. P> p> LivetaA (NULL) CODE> - Alors gardez cela à l'esprit car il peut y avoir un nullpointer. Vous ne recevrez pas d'autres changements de cet objet, aussi, car il n'existe pas. P>