2016-05-25 92 views
0

我創建了一個從SQLite獲取數據並顯示在文本視圖中的方法,但是當我按下按鈕顯示應用程序崩潰時。驗證碼:從SQLite獲取數據

public void ViewData(){ 
    btnControler.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Cursor data = peopleDB.showData(); 
      if (data.getCount() == 0) { 
       display("",""); 
       return; 
      } 
      StringBuffer buffer = new StringBuffer(); 
      StringBuffer buffer2 = new StringBuffer(); 
      while (data.moveToNext()) { 
       display(buffer.append("Name:\t " + data.getString(1) + "\n").toString(),buffer2.append("Email:\t " + data.getString(2) + "\n").toString()); 

      } 
     } 
    }); 
} 

public void display(String name, String email){ 
    TVusername.append(name); 
    rphone.append(email); 
} 

錯誤是任命爲第五行Cursor data = peopleDB.showData();

05-25 23:37:03.439 916-916/info.devexchanges.googlelocation E/AndroidRuntime: FATAL EXCEPTION: main 
                       Process: info.devexchanges.googlelocation, PID: 916 
                       java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor info.devexchanges.googlelocation.DatabaseHelper.showData()' on a null object reference 
                        at info.devexchanges.googlelocation.LocationActivity$5.onClick(LocationActivity.java:473) 
                        at android.view.View.performClick(View.java:5184) 
                        at android.view.View$PerformClick.run(View.java:20910) 
                        at android.os.Handler.handleCallback(Handler.java:739) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:145) 
                        at android.app.ActivityThread.main(ActivityThread.java:5951) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:372) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195) 
+0

顯示整個堆棧跟蹤 –

+0

Silvia Hisham我已經編輯了整個堆棧跟蹤的問題。 – Meli

+0

你初始化了peopleDB嗎? –

回答

1

你可能會丟失與獲得的SQLiteDatabase參考:

DatabaseHelper databasehelper = new DatabaseHelper(getApplicationContext()); 
SQLiteDatabase peopleDB = databasehelper.getWritableDatabase(); 

你可以看到在this link爲例。

+0

我不這麼認爲,因爲我已經嘗試了兩種: DatabaseHelper peopleDB = new DatabaseHelper(this);還有 DatabaseHelper peopleDB; – Meli

+0

你需要在你的文件中有兩行。檢查以下鏈接的第24行和第25行:https://github.com/Evin1-/w3d1-sqlite-simple/blob/master/app/src/main/java/com/example/w3d1_sqlite_simple/MainActivity.java –

+0

,請不要忘記'databasehelper.getWritableDatabase();' –