0

編集テキスト入力ボックスから値を取得してデータベースに保存しようとしています。ヌル ポインター例外が発生しましたが、その理由がわかりません。助けてくれてありがとう:)

これは、値を取得し、データベースに保存するパラメーターとして渡すコードです。

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

         }


    }


}
4

2 に答える 2

2

すべての EditText が Dialog 内にあるdialogue_userinfo layout場合、Dialog インスタンスを使用して、Button クリック時に EditText のインスタンスを初期化します。次のようにします。

  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...
于 2013-05-07T02:27:40.600 に答える
0

getText は Object を返しEditableます。edittext に文字が含まれていない場合は、null オブジェクトが返される可能性があります。したがって、getText() が null オブジェクトを返すかどうかを確認する必要があります。

if(youreditView.getText() != null ) {
  String content = youreditView.getText().toString();
}
于 2013-05-07T02:27:34.087 に答える