Как изменить эффект кнопки с помощью другой кнопки в Android Studio? - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь создать приложение, которое сначала добавляет значение 1 в textView.

Затем я попытался создать еще одну кнопку, которая удваивает значение, отображаемое в текстовом представлении.

Каждый раз, когда я нажимаю первую кнопку, она должна увеличиваться на 1, а каждый раз, когда я нажимаю другую кнопку, она должна удваивать этот результат.

Но когда я снова добавляю 1 к значению, значение уходитвернуться к двойной стадии и увеличивается на единицу.

Мне нужно покрыть операции, сделав кнопку, которая добавляет значение X, и другую кнопку, которая умножает это значение кнопки на 2.

Это main.kt, который я сделал до сих пор

    value.setText("" + id)

    plusBtn.setOnClickListener {
        value.setText("" + ++id)
    }

    doubleBtn.setOnClickListener {
        value.setText("" + 2*id) 
    }

Ответы [ 4 ]

1 голос
/ 19 сентября 2019

Вы должны получить обновленное значение из textView при нажатии на любую кнопку.

Проверьте следующие утверждения, я написал на Java, но вы можете конвертировать в kotlin.

plusBtn.setOnClickListener {
    id = Integer.parseInt(value.getText().toString());
    value.setText("" + ++id)
}

doubleBtn.setOnClickListener {
    id = Integer.parseInt(value.getText().toString());
    value.setText("" + 2*id) 
}
1 голос
/ 19 сентября 2019

Это потому, что вы просто устанавливаете двойное значение идентификатора в виде значения текста, а не присваиваете двойное значение идентификатору.Для этого вы можете либо присвоить value.setText ("" + 2 * id) id = Integer.parseInt (value.getText (). toString ());или id = 2 * id value.setText (id)

1 голос
/ 19 сентября 2019

Я думаю, что это может решить проблему.Вы не сохранили значение в переменной.когда вы устанавливаете текст в 2 * id, переменная id остается той же.

value.setText("" + id)

plusBtn.setOnClickListener {
    value.setText("" + ++id)
}

doubleBtn.setOnClickListener {
    value.setText("" + 2*id)
    id=2*id; 
}
0 голосов
/ 19 сентября 2019

Я отвечаю только потому, что другие ответы пока запутаны (преобразование туда и обратно из строк) или используют ненужное повторение (вычисление удвоенного значения дважды).

Когда вы используете ++id, выиспользуется оператор приращения, который добавляет единицу к значению в id, но также изменяет id на новое значение.Это сокращенный способ написания того, что обычно занимает две строки кода.То, что вы делаете, эквивалентно

plusBtn.setOnClickListener {
    id = id + 1
    value.setText("" + id)
}

Когда вы используете 2*id, вы вычисляете новое значение, но вы не назначаете это новое значение для id.Не существует сокращенного оператора для выполнения обоих действий, как для добавления или вычитания одного.

Самое простое решение - присвоить новое значение перед изменением текста.Таким образом, ваш второй слушатель кнопки становится:

doubleBtn.setOnClickListener {
    id = id * 2
    value.setText("" + id) 
}

или, более кратко:

doubleBtn.setOnClickListener {
    id *= 2
    value.setText("" + id) 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...