Пользовательский ввод в редактируемом текстовом поле в android studio путем ручного ввода и нажатия кнопок - PullRequest
0 голосов
/ 14 октября 2018

Я хочу получить ввод от пользователя в текстовом поле редактирования в Android Studio, вводя вручную пользователя и нажимая кнопки.Но какой-то разборчивый метод на этом сайте, касающийся этой проблемы, не работает для меня и выдает исключение (Попытка вызвать виртуальный метод 'android.view.Window $ Callbackandroid.view.Window.getCallback ()' для нулевого объектассылка)

public class Main2Activity extends AppCompatActivity {
    int quantity = getQuantity();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
    }
    // Increment button
    public void increment(View view){
        quantity = quantity + 1;
        while (quantity > 10){
            quantity = quantity - 1;
        }
        setQuantity(quantity);
    }

    // Decrement button
    public void decrement(View view){
        quantity = quantity - 1;
        while (quantity < 1){
            quantity = quantity + 1;
        }
        setQuantity(quantity);    
    }

    private int getQuantity(){
        EditText editText = findViewById(R.id.qty_edit_text);
        int quantity = Integer.parseInt(editText.getText().toString());
        return quantity;
    }

    private void setQuantity(int number){
        EditText editText = findViewById(R.id.qty_edit_text);
        editText.setText("" + number);
    }

}

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

Вы вызываете функцию getQuantity() до вызова setContentView(int res).Прежде всего, не инициализируйте ваш EditText в getQuantity() и setQuantity(int) Создать переменную EditText editText в классе Main2Activity, но вне метода onCreate(Bundle).Так же, как вы создаете int quantity.Это должно выглядеть следующим образом:

int quantity = 0;
EditText editText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    editText = findViewById(R.id.qty_edit_text);
    quantity = getQuantity();
}

Таким образом, вы можете получить доступ к своему editText из каждого метода в Main2Activity class

0 голосов
/ 15 октября 2018

Вот разработанная версия.LOL

public class Main2Activity extends AppCompatActivity {
int quantity;
EditText editText;
Button IncrementButton, DecrementButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    quantity = getQuantity();
    editText = findViewById(R.id.qty_edit_text);
    IncrementButton = //findViewByid....
    DecrementButton = //FindViewByID

   IncrementButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           quantity = quantity + 1;
    while (quantity > 10){
        quantity = quantity - 1;
    }
    setQuantity(quantity);
        }
    });
  DecrementButton.etOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            quantity = quantity - 1;
           while (quantity < 1){
          quantity = quantity + 1;
    }
        setQuantity(quantity);    
          }

 }




private int getQuantity(){
    int quantity = Integer.parseInt(editText.getText().toString());
    return quantity;
}

private void setQuantity(int number){
    editText.setText("" + number);
}

}
0 голосов
/ 14 октября 2018

Почему бы вам не использовать button.setOnClickListener () вместо public void increment или decment.make, чтобы редактировать текст глобально, и с помощью метода onCreate () установить идентификатор ресурса для редактируемого текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...