-2

Can anyone please explain why I'm getting a NullPointerException when I try to register a user and save his details to the database?

Here is the xml file, which just asks for the user's details

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/eT_R_userName"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:ems="10"
        android:hint="User Name"
        android:inputType="textPersonName" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/eT_R_email"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:ems="10"
        android:hint="Email"
        android:inputType="textEmailAddress" />

    <EditText
        android:id="@+id/eT_R_password"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:ems="10"
        android:hint="Password"
        android:inputType="textPassword" />

    <Button
        android:id="@+id/btn_R_register"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:onClick="Login"
        android:text="Register" />

</LinearLayout>

onClick Listener

Button btn_register = (Button)findViewById(R.id.btn_R_register);

btn_register.setOnClickListener(new View.OnClickListener() 
{

    @Override
    public void onClick(View v) 
    {

        //insert user profile data into database
        final String Name = user_name.getText().toString();
        final String Email = email.getText().toString();
        final String Password = password.getText().toString();

        //Debug
        System.out.println(">>>onClick1---> Register User\nName: " + Name + "\nEmail: " + Email + "\nPassword: " + Password);

        //Method
        insert(Name, Email, Password);
    }
});

Method to insert data, the NullPointerException occurs here

    public void insert(String Name, String Email, String Password)
    {
        //Debug
        System.out.println(">>>Method---> insert user data into Database\n" + Name + "\n" + Email + "\n" + Password);

        db.insertData(Name, Email, Password);
}

The Database stuff looks like this

public static final String USER_ID = "email";
public static final String USER_NAME = "user_name";
public static final String PASSWORD = "password";

public static final String DATABASE_NAME = "molo.db";
public static final String DATABASE_TABLE = "user_profile";
private static final int DATABASE_VERSION = 1;

//SQL to create new database
private static final String DATABASE_CREATE = 
        "create table " + DATABASE_TABLE +
        " (" +
        USER_ID + " text not null, " +
        USER_NAME + " text not null, " +
        PASSWORD + " text not null);";

and this

public void insertData(String user_ID, String user_Name, String Password)
{
    // Put these elements in the User Profile table
    ContentValues element = new ContentValues();
    element.put(com.example.molo.UserDB.USER_ID, user_ID);
    element.put(com.example.molo.UserDB.USER_NAME, user_Name);
    element.put(com.example.molo.UserDB.PASSWORD, Password);
    database.insert(com.example.molo.UserDB.DATABASE_TABLE, null, element);
}
Code Vader
  • 739
  • 3
  • 9
  • 26

1 Answers1

3

Your db object is null in this place:

db.insertData(Name, Email, Password);

You get NullPointerException because you're trying to perform an operation on object which is null. Ensure that you initialize it properly before you use it in your insert() method.

Piotr Chojnacki
  • 6,837
  • 5
  • 34
  • 65