カテゴリー:
エラー
閲覧数:735 配信日:2013-08-02 10:42
エラーメッセージ
Sorry! The application ★★ has stopped unexpectedly.Please try again.
エラーログ
08-01 22:46:51.736: E/AndroidRuntime(278): FATAL EXCEPTION: main
08-01 22:46:51.736: E/AndroidRuntime(278): java.lang.NullPointerException
08-01 22:46:51.736: E/AndroidRuntime(278): at android.style.householdaccount.Item.onClick(Item.java:97)
内容08-01 22:46:51.736: E/AndroidRuntime(278): java.lang.NullPointerException
08-01 22:46:51.736: E/AndroidRuntime(278): at android.style.householdaccount.Item.onClick(Item.java:97)
・「android.style.householdaccount」パッケージ「Item」クラス「onClick」メソッドを実行する際、「null値(定義されていない値のこと)の参照型変数を参照しようとした時に発生する例外」が発生したため、エラー
エラー発生箇所
▼/src/android/style/householdaccount/Item.java
public void onClick(View v) {
if(v==button2){//内訳サーチボタン
// 正常起動時
try{
// クラスのインスタンス化
SubOpenHelper helper = new SubOpenHelper(getApplicationContext(),"test.db3",1);
//コンストラクタのデータを決める。コンテキスト、DBファイル名、バージョン。
// データベースの設定
SQLiteDatabase db;
db = helper.getWritableDatabase();
//データベースに書き込めるように設定
// db.execSQL("insert into Date_Table(Koumoku,Utiwake,Kingaku) values ('食事', 'ステーキ',1000);");
db.execSQL("insert into Date_Table(Item,Utiwake,Kingaku) values ('食事', 'ステーキ',1000);");
//insertで行に追加
dbtest1.setText("");
//dbtest1の初期化
// カーソルの設定
// String[] cols = {"Koumoku","Utiwake","Kingaku"};
String[] cols = {"Item","Utiwake","Kingaku"};
Cursor c = db.query("Date_Table",cols,null, null, null, null, null,null);
//カーソルのリストを作る。1:テーブル名、2:取得する列名(カラム等)の配列、
//3&4:取得するレコードの条件、5:GROUP BY条件、6:「HAVING」条件、
//7:「ORDER BY」条件、8:「limit」条件
boolean isEof = c.moveToFirst();
//カーソルを先頭に移動
while (isEof) {
//while文。カーソルが最後に行くまで繰り返す。
dbtest1.append(c.getString(0));
dbtest1.append(c.getString(1));
dbtest1.append(String.valueOf(c.getInt(2)));
//getString(0)メソッドで、カーソルの一行目を追加。2,3も同じ。
isEof = c.moveToNext();}
//次のリストにカーソルを移す。
c.close();
//終わったら閉じる。これがないとエラーとなる。データベースも。
db.close();
}
// 異常終了時
catch(SQLiteException e){
dbtest1.setText("エラー");
return;
}
}
・このコード自体に問題はない
・つまり、「エラー発生箇所」と「エラー原因箇所」は必ずしも一致しない
エラー原因
・「dbtest1」テキストオブジェクトがnull
エラー対応
▼/src/android/style/householdaccount/Item.java
・onCreateメソッド内にて、テキストオブジェクト取得
/* コンポーネントの設定 */
dbtest1 = (TextView)this.findViewById(R.id.dbtest1);
※つまり、この1行が抜けていたことが原因!