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

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

新規登録して質問してみよう
ただいま回答率
86.12%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

解決済

NullPointerExceptionが出ます。アドバイスをいただけないでしょうか?

edoooooo
edoooooo

総合スコア476

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

1回答

0リアクション

0クリップ

3335閲覧

投稿2017/04/07 01:56

編集2017/04/07 02:13

java.lang.NullPointerExceptionが SQLiteDatabase db=memoDBHelper.getWritableDatabase();に出るのですが、なぜなのでしょうか?
アドバイスをいただけないでしょうか?
どうぞよろしくお願いします。
MemoDBHelper

java

package com.example.android.sample.memo; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by endoutaichi on 2017/04/06. */ public class MemoDBHelper extends SQLiteOpenHelper { public static final String DB_NAME="myapp.db"; public static final int DB_VERSION=1; public static final String CREATE_TABLE= "create table " + UserContract.Users.TABLE_NAME + "(" + UserContract.Users._ID+ " integer primary key autoincrement, " + UserContract.Users.COL_TITLE + " title," + UserContract.Users.COL_CONTENT + " content, +" + UserContract.Users.COL_DATA + "data" + ")"; /**"create table"+ UserContract.Users.TABLE_NAME+"("+ UserContract.Users._ID+"integer primary key autoincrement,"+ UserContract.Users.COL_NAME+"text,"+ UserContract.Users.COL_SCORE+"integer)"; **/ public static final String INIT_TABLE= "insert into users (title,content,data)values" + "('仕事','出張','5月3日'),"+ "('遊び','海','8月4日'),"+ "('買い物','ららぽーと','3月3日')"; public static final String DROP_TABLE= "drop table if exists users"; public MemoDBHelper(Context c){ super(c,DB_NAME,null,DB_VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { //create table sqLiteDatabase.execSQL(CREATE_TABLE); //init table sqLiteDatabase.execSQL(INIT_TABLE); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { //drop table sqLiteDatabase.execSQL(DROP_TABLE); //onCreate onCreate(sqLiteDatabase); } }

MainActivity.java

java

public class MainActivity extends AppCompatActivity { // ListView 用アダプタ SimpleAdapter mAdapter = null; // ListView に設定するデーた List<Map<String, String>> mList = null; //open helper //open db memoDBHelperに変更 MemoDBHelper memoDBHelper=new MemoDBHelper(this); SQLiteDatabase db=memoDBHelper.getWritableDatabase(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView list = (ListView) findViewById(R.id.listView); mList = new ArrayList<Map<String, String>>(); mAdapter = new SimpleAdapter(this, mList, //独自で定義したlayoutを適応する 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順に合わせる ); // ListView にアダプターをセット list.setAdapter(mAdapter); // ListView のアイテム選択イベント list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick( AdapterView<?> parent, View view, int pos, long id) { // 編集画面に渡すデータをセットし、表示 //この下は、ファイルとは関係ないonResume()からやる Intent intent = new Intent(MainActivity.this, EditActivity.class); intent.putExtra("NAME", mList.get(pos).get("filename")); intent.putExtra("TITLE", mList.get(pos).get("title")); intent.putExtra("CONTENT", mList.get(pos).get("content")); intent.putExtra("DATA", mList.get(pos).get("data")); startActivity(intent); } }); // ListView をコンテキストメニューに登録 registerForContextMenu(list); } @Override protected void onResume() { super.onResume(); // ListView 用アダプタのデータをクリア mList.clear(); /** for (int i=0; i<files.length; i++) { String fileName = files[i].getName(); if (files[i].isFile() && fileName.endsWith(".txt")) { データベースのデータを全取得してそれをリストに入れるのにこのようなfor分は、必要ではないのか? 多分whileでやってるから大丈夫 **/ Integer id=null; String title = null; String content = null; String data=null; //ここからコピペ //これはselect Cursor c=null; 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()); while(c.moveToNext()){ id=c.getInt(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); //この上のLog不安 //Logだけじゃなくて、リストに入れる これ以降は、ファイルと共有できると思う } c.close(); //close db db.close(); //この上こぴぺ //このセットでlistを作っっている? //ここここは、つかう。Mapにセットする // ListView用のアダプタにデータをセット Map<String, String> map = new HashMap<String, String>(); map.put("title", title); map.put("content", content); map.put("data",data); mList.add(map); // ListView のデータ変更を表示に反映 mAdapter.notifyDataSetChanged(); }

java

04-07 10:48:28.281 24469-24469/com.example.android.sample.memo E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.sample.memo/com.example.android.sample.memo.MainActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1994) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2095) at android.app.ActivityThread.access$600(ActivityThread.java:137) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206)

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

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

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

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

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

適切な質問に修正を依頼しましょう。

2017/04/07 02:37

こちらの質問が複数のユーザーから「過去の低評価」という指摘を受けました。

masaya_ohashi

2017/04/07 02:11

DBに接続がうまくできていないことが原因だと思います。MemoDBHelperというコードの方も見せていただかないと答えられません。
edoooooo

2017/04/07 02:12

承知いたしました。コードをすぐ載せます。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。