Почему он не получил текущее значение EditText

#android

#Android

Вопрос:

Я делаю базовую демонстрацию Android, связанную с входом в систему, обновлением пользователя
Я использовал идентификатор пользователя со страницы входа, чтобы загрузить информацию пользователя на страницу обновления

  username = (EditText) findViewById(R.id.txtUsername);
 age = (EditText) findViewById(R.id.txtAge);
 weight  = (EditText) findViewById(R.id.txtWeight);
 height = (EditText) findViewById(R.id.txtHeight);
 username.setText(db_username);
 age.setText(db_age);
 weight.setText(db_weight);
 height.setText(db_height);
  

и кнопка обновления

 update.setOnClickListener(new View.OnClickListener() {
        int sweight = Integer.parseInt(weight.getText().toString());
        double sheight = Double.parseDouble(height.getText().toString());
        int sage = Integer.parseInt(age.getText().toString());
        @Override
        public void onClick(View v) {
            if (weight.equals("")) {
                Toast.makeText(getApplicationContext(), "Please input weight!",
                        Toast.LENGTH_LONG).show();
                return;
            }else if(height.equals("")){
                Toast.makeText(getApplicationContext(), "Please input height!",
                        Toast.LENGTH_LONG).show();
                return;
            }else if(age.equals("")){
                Toast.makeText(getApplicationContext(), "Please input age!",
                        Toast.LENGTH_LONG).show();
                return;
            }else{
                dbHandler.updateUser(sid,sweight,sheight,sage);
                Toast.makeText(getApplicationContext(),
                        "User's information updated! ", Toast.LENGTH_LONG)
                        .show();
                Toast.makeText(getApplicationContext(),
                        sid sweight sheight sage " and test", Toast.LENGTH_LONG)
                        .show();
                Intent i = new Intent(UserUpdate.this, MainActivity.class);
                startActivity(i);
                finish();

            }
        }
    });
  

Для экзамена: вес: 70, рост: 1,65, возраст: 21
когда я изменил его на: вес: 50, рост: 1,65, возраст: 21
2-й тост показывает мне этот вес: 70, но не 50

Комментарии:

1. Вероятно, вам также следует использовать setError в EditTexts вместо поджаривания

Ответ №1:

Вам нужно переместить эти три верхние строки внутри метода click, а не объявлять их как переменные-члены анонимного класса.

     int sweight = Integer.parseInt(weight.getText().toString());
    double sheight = Double.parseDouble(height.getText().toString());
    int sage = Integer.parseInt(age.getText().toString());

    @Override
    public void onClick(View v) {

        // Move them here
  

Ответ №2:

поместите это :

     int sweight = Integer.parseInt(weight.getText().toString());
    double sheight = Double.parseDouble(height.getText().toString());
    int sage = Integer.parseInt(age.getText().toString());
  

в методе onclick , перед -> if (weight.equals(«»))