1

Just to preface I've been linked to a thread on null pointer references and couldn't see how it helped for my situation it may just be because I started using java a month ago.. so sorry if this question is redundant. I'm receiving null object reference error to my function MYDBHandler.staffToString() which is being called in my class here.

public class Order extends AppCompatActivity {
    Spinner staffSpinner;
    MyDBHandler db;
    String staffNames = "";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_order);
        staffSpinner = (Spinner) findViewById(R.id.staffSpinner);
        populateSpinner(db);
    }
public void populateSpinner(MyDBHandler db){
    staffNames = db.staffToString();
    List<String> Staff = new ArrayList<>();
    String[] parts = staffNames.split("/n");
    String part1 = parts[0];
    String part2 = parts[1];
    String part3 = parts[2];
    String part4 = parts[3];
    String part5 = parts[4];
    Staff.add(part1);
    Staff.add(part2);
    Staff.add(part3);
    Staff.add(part4);
    Staff.add(part5);
    ArrayAdapter<String> adp1=new ArrayAdapter<>(Order.this,android.R.layout.simple_list_item_1,Staff);
    adp1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    staffSpinner.setAdapter(adp1);
}

}

Pointing to this function in my dbhandler class

 public String staffToString(){
        String dbString = "";
        SQLiteDatabase db = getWritableDatabase();
        String query = "SELECT * FROM " + TABLE_STAFF + " WHERE 1";

        //Cursor point to a location in your results
        Cursor c = db.rawQuery(query, null);
        //Move back to first row
        c.moveToFirst();

        while (!c.isAfterLast()){
            if (c.getString(c.getColumnIndex("staffname")) !=null){
                dbString += c.getString(c.getColumnIndex("staffname"));
                dbString += "/n";
            }
            c.moveToNext();
        }
        db.close();
        c.close();
        return dbString;

    }

if the problem isnt here I can post more but I'm currently stumped as my objects shouldnt be null?

Logcat is as follows

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.ben.assignmentpart2.MyDBHandler.staffToString()' on a null object reference
                                                                                   at com.example.ben.assignmentpart2.Order.populateSpinner(Order.java:25)
                                                                                   at com.example.ben.assignmentpart2.Order.onCreate(Order.java:21)
                                                                                   at android.app.Activity.performCreate(Activity.java:6237)
                                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                                   at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                   at android.os.Looper.loop(Looper.java:148) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
B Hili
  • 23
  • 5
  • Welcome to SO. Please paste the relevant lines of the error's stacktrace – Francisco Puga Jan 11 '16 at 08:53
  • Thank you for the help, I've never used a stacktrace before so I'll have to take the time to look it up ill post it when I'm able :) – B Hili Jan 11 '16 at 10:13
  • Ok just realised that stacktrace is just logcats output never heard the term before x_x I've posted it up just now it seems to be pointing to the oncreate function – B Hili Jan 11 '16 at 10:25

0 Answers0