質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.82%

java.lang.NullPointerExceptionが出ます。どうぞよろしくお願いします。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,567

edoooooo

score 162

java.lang.NullPointerExceptionが  String idd = c.getString(c.getColumnIndex(UserContract.Users._ID));
にでます。

どうぞ宜しくお願い致します。

public class MainActivity extends AppCompatActivity {

    SimpleAdapter mAdapter = null;

    List<Map<String, String>> mList = null;

    ListView list=null;

    SQLiteDatabase db=null;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        MemoDBHelper memoDBHelper=new MemoDBHelper(this);
       db=memoDBHelper.getWritableDatabase();



        db.execSQL(CREATE_TABLE);



        ListView list = (ListView) findViewById(R.id.listView);
        mList = new ArrayList<Map<String, String>>();


        mAdapter = new SimpleAdapter(this,
                mList,

                android.R.layout.simple_list_item_2,
                new String[]{"title", "content", "data"}, //Map側のkey
                new int[]{android.R.id.text1, android.R.id.text2, R.id.eTxtData} //layout側のTextViewId 表示させたいMapのkey順に合わせる
        );

        list.setAdapter(mAdapter);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {


                Intent intent = new Intent(MainActivity.this, EditActivity.class);

                intent.putExtra("INSERT","");

                intent.putExtra("TITLE", mList.get(pos).get("title"));
                intent.putExtra("CONTENT", mList.get(pos).get("content"));
                intent.putExtra("DATA", mList.get(pos).get("data"));


               String title1=  mList.get(pos).get("title");
                String content1=mList.get(pos).get("content");
                 String data1=mList.get(pos).get("data");



                String sql="SELECT * FROM UserContract.Users.TABLE_NAME\n" +
                        "                        WHERE UserContract.Users.COL_TITLE== title1\n" +
                        "                        AND  UserContract.Users.COL_CONTENT == content1\")\n" +
                        "                        AND  UserContract.Users.COL_DATA==data1\")";

////////この下の列にエラーが出ます。
                Cursor c =db.rawQuery(sql,null);


                if(c.moveToFirst()) {
                    String idd = c.getString(c.getColumnIndex(UserContract.Users._ID));


                     System.out.println(idd);

                    c.close();

                    intent.putExtra("ID", idd);
                }

                startActivity(intent);
            }
        });

        // ListView をコンテキストメニューに登録
        registerForContextMenu(list);
    }





    @Override
    protected void onResume() {
        super.onResume();

        //open helper
        //open db   memoDBHelperに変更
        MemoDBHelper memoDBHelper=new MemoDBHelper(this);
        SQLiteDatabase db=memoDBHelper.getWritableDatabase();

    mList.clear();

        String id=null;
        String title = null;
        String content = null;
        String data=null;

        //ここからコピペ

        //これはselect
        Cursor c;
        c=db.query(
                UserContract.Users.TABLE_NAME,
                null,//fields
                null,//where
                null,//where arg ここでは、多分何もせずに、全件取得して、リストに入れる
                null,//groupBy
                null,//having
                null,//order by
                null
        );

        Log.v("DB_TEST","Count:"+c.getCount());

        Map<String, String> map = new HashMap<String, String>();
        while(c.moveToNext()){

 //       id=c.getString(c.getColumnIndex(UserContract.Users._ID));
            title=c.getString(c.getColumnIndex(UserContract.Users.COL_TITLE));
             content=c.getString(c.getColumnIndex(UserContract.Users.COL_CONTENT));
             data=c.getString(c.getColumnIndex(UserContract.Users.COL_DATA));
            Log.v("DB_TEST"," id: "+id+ "title: "+title+ "content: "+content+" data: "+data);


            map.put("title", title);
            map.put("content", content);
            map.put("data",data);
            mList.add(map);


        }

        c.close();

        db.close();


        // ListView のデータ変更を表示に反映
        mAdapter.notifyDataSetChanged();
    }


}
E/AndroidRuntime: FATAL EXCEPTION: main
                                                                               android.database.sqlite.SQLiteException: near ".": syntax error (code 1): , while compiling: SELECT * FROM UserContract.Users.TABLE_NAME
                                                                                                       WHERE UserContract.Users.COL_TITLE== title1
                                                                                                       AND  UserContract.Users.COL_CONTENT == content1")
                                                                                                       AND  UserContract.Users.COL_DATA==data1")
                                                                                   at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                                                   at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:893)
                                                                                   at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:504)
                                                                                   at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                                                   at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                                                   at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
                                                                                   at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
                                                                                   at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1322)
                                                                                   at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1261)
                                                                                   at com.example.android.sample.memo.MainActivity$1.onItemClick(MainActivity.java:148)
                                                                                   at android.widget.AdapterView.performItemClick(AdapterView.java:298)
                                                                                   at android.widget.AbsListView.performItemClick(AbsListView.java:1086)
                                                                                   at android.widget.AbsListView$PerformClick.run(AbsListView.java:2859)
                                                                                   at android.widget.AbsListView$1.run(AbsListView.java:3533)
                                                                                   at android.os.Handler.handleCallback(Handler.java:615)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                                   at android.os.Looper.loop(Looper.java:213)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:4786)
                                                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
                                                                                   at dalvik.system.NativeStart.main(Native Method)
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+5

ヌルポインタが出た場合は該当の行で使われている変数全てに対してnullかどうかをデバッグしてください。
どの変数がnullかを突き止めたあとはなぜnullになるのかを考えてください。
この一連の質問にどれくらい時間をかけていますか?自分でデバッグができるようになったら質問が減り解決しているはずです。
開発を中断してデバッグの知識を勉強したほうがいいですよ。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/18 20:59

    少なくともエラー文はきちんと読む。書いてあるのですから。他人に見せるための文ではないです。英語が読めないのなら調べればすぐ出ます。日本語で構文エラーって書いてあって構文エラーってなんですか?っていう質問はおかしいでしょ。そういうことです。

    キャンセル

  • 2017/04/18 20:59

    toutouさん
    その通りですね。

    キャンセル

  • 2017/04/18 21:01

    はい、エラー文を理解し、対策をしてから質問をします。

    キャンセル

+2

http://qiita.com/tk_daze/items/33f931a86f8af4264c8f
ここのページを元に作っていますか?

もしそうだとして、記事内のコードとご自身のコードで異なる点はどこだか理解できますか?


4/19追記

yonaさんの回答に連なるやり取りを見て
「ネットの記事でそれらしいのがあった、これをコピペして自分の都合のいいように改変すれば完成だ」
といった感じで継ぎ接ぎのJavaコーディング(のような何か)をしているように感じます。
自分の希望通りの動きにするために、どこを改変すべきか/どこは改変してはいけないか理解できていますか?
「一行一行何の目的で実行しているのか調べてみよう」という覚悟で臨まなければなりません。

また、過去の質問においても、デバッグを学習するよう言われているにもかかわらず
Logを出してみる以上のことはしていないように見受けられます。
Logを出してみてみる=デバッグではありません
ステップ実行やその過程での変数監視などはやっていますか?
(念のため言いますがステップ実行や変数監視をすればデバッグ出来ているというわけでもありません)

今の状況でteratailのようなサイトで問題解決を試みるのは非効率です。
今必要なのは「なぜ自分のつくりではダメなのか」を理解することですが
回答者がそれを細やかに解説してくれることは稀です。
マンツーマンで教えてもらえるプログラミング講座などを受けたほうが
(今の実力と比べて)遥かに力をつけられると思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/19 01:07

    fcrowさんの言うことは至極その通りなのですが、私はそれ以前にこの人には「人の話を聞く力」が足りてないように思います。
    それがない限りプログラミング講座を受けても失敗するでしょうね。

    キャンセル

  • 2017/04/19 01:36

    講座となるとお金を出す必要がありますし「お金かけてるからには!」位の気持ちで臨んでくれたらあるいは・・・?という思いはあります。
    「お金なんてない」「そんな時間無い」というのであれば、あとはもう血反吐を吐いてでも必死に勉強するか、諦めるかのどっちかでしょうね。

    キャンセル

  • 2017/04/19 16:52

    回答ありがとうございます。
    プログラミングを学習する上でいろいろなことを学ばなきゃいけ無いみたいですね。
    課題山済みで、努力が必須ということは身にしみて感じました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.82%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る