Lilu Patel
Lilu Patel

Reputation: 321

Retrieving values from input texts android

I am trying to retrieve the values from the edit text input boxes and store them in a database. I am getting a null pointer exception and I am not sure why. Thanks in advance for the help :)

This is my code where I am retrieving the values and passing them as parameters to be stored in the database:

public class MyPage extends Activity {

    final Context context = this;
    public String stringName;
    public int intAge;
    public int intWeight;
    public int intHeight;
    public String stringGoal;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_page);

         final Button button = (Button) findViewById(R.id.btn_addInfo);
         button.setOnClickListener(new OnClickListener() {
             public void onClick(View v) {
                // custom dialog
                final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.dialogue_userinfo);
                dialog.setTitle("Add Your Information");


                Button dialogButton = (Button) dialog.findViewById(R.id.btnDone);
                // if button is clicked, close the custom dialog
                dialogButton.setOnClickListener(new OnClickListener() {
                    public void onClick(View v) {

                         EditText textName = (EditText)findViewById(R.id.txtName);
                         stringName = textName.getText().toString();

                         EditText textAge = (EditText)findViewById(R.id.txtAge);
                         intAge = Integer.parseInt(textAge.getText().toString());

                         EditText textWeight = (EditText)findViewById(R.id.txtWeight);
                         intWeight = Integer.parseInt(textWeight.getText().toString());

                         EditText textHeight = (EditText)findViewById(R.id.txtHeight);
                         intHeight = Integer.parseInt(textHeight.getText().toString());

                         EditText textGoal = (EditText)findViewById(R.id.txtGoal);
                         stringGoal = textGoal.getText().toString();

                        DatabaseAccess();
                        dialog.dismiss();

                    }
                });

                dialog.show();
                Window window = dialog.getWindow();
                window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
              }

         });
    }

         private void DatabaseAccess(){

             DatabaseHandler db = new DatabaseHandler(this);

             /**
              * CRUD Operations
              * */
             // Inserting User
             Log.d("Insert: ", "Inserting .."); 

             db.addUser(new User(stringName, intAge, intWeight, intHeight, stringGoal));   

             //db.addUser(new User("Peter Parker", 23, 50, 150, "Hi"));        


             // Reading all users
             Log.d("Reading: ", "Reading all contacts.."); 
             List<User> users = db.getAllUsers();       

             for (User us : users) {
                 String log = "Id: "+us.getId()+" ,Name: " + us.getName() + " ,Age: " + us.getAge()
                         + " ,Weight: " + us.getWeight() + " ,Height: " + us.getHeight() 
                         + " ,Goal: " + us.getGoal()
                         + " ,BMI: " + us.getBmi();

             Log.d("Name: ", log);

         }


    }


}

Upvotes: 0

Views: 113

Answers (2)

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132982

if All EditText's inside Dialog dialogue_userinfo layout then use Dialog instance for initializing EditText's instances on Button click. do it as:

  EditText textName = (EditText)dialog.findViewById(R.id.txtName);
  stringName = textName.getText().toString();

  EditText textAge = (EditText)dialog.findViewById(R.id.txtAge);
  intAge = Integer.parseInt(textAge.getText().toString());
  //....same for others...

Upvotes: 2

buptcoder
buptcoder

Reputation: 2702

getText will return Editable Object. If your edittext has no any characters, it maybe return the null Object. So you have to check whether getText() return a null object.

if(youreditView.getText() != null ) {
  String content = youreditView.getText().toString();
}

Upvotes: 0

Related Questions