2010-11-23 53 views
1

ここに状況があります。データベースをアップグレードして、単一の列を追加しています。アップグレードはうまくいくようです。私は新しい列が追加されたのを見ることができますが、問題は、私のアプリを新しいバージョンの古いバージョンから新しいバージョンにアップグレードするときです。強制終了は、新しい列にアクセスするときに発生するようです。しかし、私は新鮮なインストールを行う場合は、私は強制的に閉鎖し、アプリケーションは期待どおりに動作しません。Android SQLite onUpgrade =強制終了

upUpgrade上のマイようになります。

@Override public void onUpgrade(SQLiteDatabase notes_db, int oldVersion, int newVersion) { if (oldVersion == 29) { 
    notes_db.execSQL("ALTER TABLE Notes ADD COLUMN Priority text"); 
    notes_db.execSQL("ALTER TABLE Todo ADD COLUMN Priority text"); 
    notes_db.execSQL("ALTER TABLE Todo_keys ADD COLUMN Priority text"); } else { 
    notes_db.execSQL("DROP TABLE IF EXISTS " + NOTES_TABLE); 
    notes_db.execSQL("DROP TABLE IF EXISTS " + TODO_TABLE); 
    notes_db.execSQL("DROP TABLE IF EXISTS " + TODO_KEYS_TABLE); 
    onCreate(notes_db); }  } 

任意のアイデアをいただければ幸いです。

私はそれが失敗したと考えているところです...

11-23 14:37:06.210: DEBUG/AndroidRuntime(1647): Shutting down VM 
11-23 14:37:06.210: WARN/dalvikvm(1647): threadid=1: thread exiting with uncaught exception (group=0x4001d7e8) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647): FATAL EXCEPTION: main 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647): java.lang.NullPointerException 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at com.flufflydelusions.app.extensive_notes_donate.Notes$TaskSimpleCursorAdapter.getView(Notes.java:1065) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.widget.AbsListView.obtainView(AbsListView.java:1315) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1198) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.widget.ListView.onMeasure(ListView.java:1109) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.view.View.measure(View.java:8173) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:381) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.view.View.measure(View.java:8173) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.view.View.measure(View.java:8173) 
11-23 14:37:06.210: ERROR/AndroidRuntime(1647):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:526) 

ライン1065

文字列の優先1 = c.getString(C ... catch文と優先1は、私が追加された新しいコラムです。 getColumnIndex(databaseHelper.DB_COLUMN_PRIORITY));

 if (priority1.equals("Low")) { 
      try { 
       String low_pref = preferences.getString("low_priority_color", "Default"); 
       if (!low_pref.equals("Default")){ 
        priority_text.setBackgroundColor(Integer.parseInt(low_pref, 16)+0xFF000000); 
        priority_text.setVisibility(View.VISIBLE); 
       } else { 
        priority_text.setBackgroundColor(0xFFFFe640); 
        priority_text.setVisibility(View.VISIBLE); 
       }} catch (Exception e) { 
        errorText = e.getMessage(); 
        themeError(); 
       }     
      } 
+0

stacktraceを表示してください。 –

+0

あなたは行き​​ます。 getViewは新しい列にアクセスする場所です。もし私がそこから声明を出すなら、それは動くだろう。しかし明らかに私はそれを必要とする。 – Paul

+0

OK、Notes.javaと1065行のコンテキストはどうですか? –

答えて

1

固定。新しい列にnull値がありました

関連する問題