Как использовать значение из одного метода в другой? - PullRequest
0 голосов
/ 09 апреля 2020

Итак, я занимался калькулятором bmi в студии android. И я столкнулся с проблемой, когда я получил значение двух переменных внутри двух методов для разных TextView, которые были определены в классе. Это не должно быть проблемой, но как только я переключаюсь на другое TextView в приложении. Первый отправляет нулевое значение, в чем проблема, Кто-нибудь знает, как это исправить? Спасибо !

Два метода в onCreate, которые дают значение:

inheight.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                    height = Double.parseDouble(inheight.getText().toString());

                if(KeyEvent.KEYCODE_DEL== keyCode)
                {
                    if(inheight.getText().length() != 0)
                        inheight.setText(inheight.getText().subSequence(0,inheight.getText().length()-1));
                }

                return true;
            }
        });




        inweight.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                    weight = Integer.parseInt(inweight.getText().toString());

                if(KeyEvent.KEYCODE_DEL == keyCode)
                {
                    if(inweight.getText().length() != 0)
                    inweight.setText(inweight.getText().subSequence(0,inweight.getText().length()-1));
                }
                return true;
            }
        });

И метод Calculate, где я пытаюсь вычислить

    public void calculate()
    {

        if(height!=0 && weight !=0)
       {
// do this
       }
else
{
            Toast.makeText(this, "Error: Values Cannot Be Zero!", Toast.LENGTH_LONG).show();

}

Так, когда я запускаю, он всегда показывает тост сообщение :(. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 09 апреля 2020

Как указано в документации android , View.OnKeyListener полезен только для аппаратных клавиатур, а программный метод ввода (например, используемый android) не обязан запускать этот прослушиватель .

Таким образом, вместо использования View.OnKeyListener для получения ваших значений, я бы попробовал другой подход (например, получение значений после нажатия кнопки, реализация View.OnClickListener)

Также вы уверены, что только первый TextView дает нулевое значение или оба?

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