ここから本文です

android studioを使用してアプリを作成しているのですが、ビルドは出来て、スマホ...

don********さん

2015/7/323:59:23

android studioを使用してアプリを作成しているのですが、ビルドは出来て、スマホで起動すると強制終了してしまいます。

エラーは、
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.traintimeapplication/com.example.traintimeapplication.MainActivity}: java.lang.NullPointerException
~略~
at com.example.traintimeapplication.SQLHelper.<init>(SQLHelper.java:29)
at com.example.traintimeapplication.MainActivity.<init>(MainActivity.java:68)

文字数が足りないので少し省略しますが、こんなエラーが出ます。
やろうとしていることは、事前に作った拡張子がdbのデータベースをassetsフォルダに入れ、読み込みこんでそれを使いたいと思っています。
ちなみに「http://naichilab.blogspot.jp/2013/07/pcsqlitedbandroid.html
このサイトものをお借りして作りました。
メインアクティビティクラスの中の、
「SQLHelper sqlHelper = new SQLHelper(this);」

SQLHelperクラスの中の、
「public SQLHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.context = context;
this.dbPath = context.getDatabasePath(DB_NAME);
}」
の辺りでエラーを見る限り出ていると思うのですが、なぜエラーが出るのか、使い始めて間もないこともあり全く分かりません。
(DB_NAMEは、拡張子dbを除いたデータベース名です。)
スマートフォンはxperiaZのandroidのバージョンは4.4.2です。
よろしくお願いします。

閲覧数:
931
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

kei********さん

2015/7/401:07:55

これだけの情報では第三者に特定することはほぼ不可能だと思います。「の辺りでエラーを見る限り出ていると思う」のではなく、Android Studioを使っているのだから、それが持つデバッグ機能を使って問題が起きている場所を特定しましょう。

ソースコードエディターの左側部分をクリックする度に、赤丸が付いたり消えたりする場所があります(添付画像参照)。これはブレークポイントの設定で、プログラムをデバッグ実行するとこの行まで到達した時点でプログラムが一時停止します。そこからF8キーを押すごとに、1行ずつプログラムを実行することができます。

NullPointerExceptionが出ているのだから、何かしら値が入っているべき変数にnullが入ったままになっているのでしょう。どの変数がそうなっているのかを特定できたら、それを呼び出す処理がどうなっているのか?と遡って原因を探ることです。

デバッグ機能を使いこなさなければ、統合開発環境を使っている意味がありません。

これだけの情報では第三者に特定することはほぼ不可能だと思います。「の辺りでエラーを見る限り出ていると思う」のではな...

  • 質問者

    don********さん

    2015/7/517:46:57

    回答ありがとうございます。教えてもらった通り、デバッグ機能を使って処理を追ってました。
    まず、「SQLHelper.java」の
    public SQLHelper(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
    this.context = context;
    this.dbPath = context.getDatabasePath(DB_NAME);
    }
    の中の処理にブレークポイントを付けたところ、最後の行の処理が終わった段階で、「ActivityThread.java」に飛び、sendmessageメソッドが実行され、ZygoteInit.javaに飛びました。そこから
    private ZygoteInit() {
    }
    から処理が始まり進めていくと、
    * Helper exception class which holds a method and arguments and
    ・・・
    のコメント分の所でアプリが落ちました。自分ではなぜ落ちたのか全く分からないのですが、もしこれだけの情報で申し訳ないのですが、わかれば教えて下さい。お願いします。

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2015/7/5 20:18:49

うまく出来ました!お二人ともありがとうございました!

ベストアンサー以外の回答

1〜1件/1件中

sea********さん

2015/7/512:49:04

SQLHelper sqlHelper = new SQLHelper(this);

のthisが何を示しているか分かりますか?
ここにはアプリケーションコンテキストを渡す必要がありますが、そうなっていますか?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる