0

I have created a method which takes data from SQLite and displays in a textview but when l press a button show the app crashes. The Code:

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);
}

The error is appointed to the fifth line 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)
Reaz Murshed
  • 21,071
  • 12
  • 69
  • 87
Meli
  • 362
  • 3
  • 6
  • 19

1 Answers1

1

You might be missing getting the SQLiteDatabase reference with:

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

You can see an example in this link.

Evin1_
  • 10,198
  • 8
  • 38
  • 47
  • I dont think so because l have tried both: DatabaseHelper peopleDB= new DatabaseHelper(this); and also DatabaseHelper peopleDB; – Meli May 25 '16 at 15:48
  • You need to have both lines in your file. Check line 24 and 25 of the following link: https://github.com/Evin1-/w3d1-sqlite-simple/blob/master/app/src/main/java/com/example/w3d1_sqlite_simple/MainActivity.java – Evin1_ May 25 '16 at 15:49
  • Also, don't forget about the `databasehelper.getWritableDatabase();` – Evin1_ May 25 '16 at 15:49
  • 1
    Thanks Evin1_ solved – Meli May 25 '16 at 15:58