Android

[Android]Attempt to invoke virtual method ‘io.realm.RealmQuery io.realm.Realm.where(java.lang.Class)’ on a null object reference

Android Studio + Realm使用時のトラブルシューティングメモ。

発生した事象

Realmでデータベース処理を実行したときに
「java.lang.NullPointerException: Attempt to invoke virtual method ‘io.realm.RealmQuery io.realm.Realm.where(java.lang.Class)’ on a null object reference」

 

なるエラーがでました。ちゃんとデータはあるはずなのに、「~null object reference」(訳すと「nullを参照してますよ」)なんてメッセージが出ます。

原因

原因は簡単。データベース処理の直前に「Realm.getDefaultInstance();」を宣言していないためです。

そりゃあ、Realmのインスタンス生成してなければ、ダメですよね・・・。開発、慌て過ぎ。

そもそも、コピペで開発しているからこんなことになるんですよね。。

恒久対策 未定・・・大いに反省

今回の失敗は、意味を理解して上から順にコード書けばこんなことににはならない。根本的なものの考え方を変える必要があると感じました。しかも、これ見つけるのに30分くらいかかったし、ダメすぎるだろう。。。

並のプログラマーは、まずこの間違いをしない上に、万が一間違っても、数秒で気づく。
こういうことを気付けるようになるような訓練をしてたい。何か思いついたら記事にします。