Как получить доступ к переменной внутри оператора when в Kotlin - PullRequest
0 голосов
/ 30 марта 2020

Я работаю над функцией самооценки, которая позволит людям узнать, есть ли у них риск заражения короной, или нет, поэтому я советую им пройти тестирование или нет. Я создал несколько кнопок группы радиосвязи, чтобы позволить пациенту проверять различные симптомы, для каждого назначенного переключателя назначается переключатель, который должен быть добавлен вместе с другими значениями, чтобы найти оценку, по которой мы можем знать, должен ли пациент приступить к тестированию ковид-19 или нет. Мне нужна помощь в исправлении моего кода, чтобы я мог прочитать и добавить все значения каждого переключателя. Вот мой код

if (view is RadioButton) {
        // Is the button now checked?
        val checked = view.isChecked

        // Check which radio button was clicked
        when (view.getId()) {
            R.id.yes_1 ->
                if (checked) {
                    val yes1= 1
                    Toast.makeText(this, "Yes 1", Toast.LENGTH_LONG).show()
                }
            R.id.no_1 ->
                if (checked){
                    val no1=0
                    Toast.makeText(this, " No 1", Toast.LENGTH_SHORT).show()
                }
            R.id.yes_2 ->
                if (checked) {
                    val yes2= 1
                    Toast.makeText(this, "Yes 2", Toast.LENGTH_LONG).show()
                }
            R.id.no_2 ->
                if (checked) {
                    val no2= 0
                    Toast.makeText(this, "No 2", Toast.LENGTH_SHORT).show()
                }
            R.id.yes_3 ->
                if (checked) {
                    val yes3=1
                    Toast.makeText(this, "Yes 3", Toast.LENGTH_LONG).show()
                }
            R.id.no_3 ->
                if (checked) {
                    val no3=0
                    Toast.makeText(this, "No 3", Toast.LENGTH_SHORT).show()
                }
            R.id.yes_4 ->
                if (checked) {
                    val yes4=1
                    Toast.makeText(this, "Yes 4", Toast.LENGTH_LONG).show()
                }
            R.id.no_4 ->
                if (checked) {
                    val no4=0
                    Toast.makeText(this, "No 4", Toast.LENGTH_SHORT).show()
                }
            R.id.yes_5 ->
                if (checked) {
                    val yes5=5
                    Toast.makeText(this, "Yes 5", Toast.LENGTH_LONG).show()
                }
            R.id.no_5 ->
                if (checked) {
                    val no5=0
                    Toast.makeText(this, "No 5", Toast.LENGTH_SHORT).show()
                }
            R.id.yes_6 ->
                if (checked) {
                    val yes6=5
                    Toast.makeText(this, "Yes 6", Toast.LENGTH_LONG).show()
                }
            R.id.no_6 ->
                if (checked) {
                    val no6=0
                    Toast.makeText(this, "No 6", Toast.LENGTH_SHORT).show()
                }
        }
        val assesment_point= yes1 + n01 + yes2 + no2 +yes3 + no3 + yes4 + no4 + yes5 + no5 + yes6 + no6
    }
}

Вот скриншот того, как работает приложение

1 Ответ

0 голосов
/ 30 марта 2020

Краткий ответ: scope определяет, можно ли получить доступ к переменной. В вашем случае эти значения существуют только внутри блока case, а не снаружи.

Быстрое исправление может заключаться в предопределении их снаружи и изменении только значений внутри блока when.

(offtopi c: Вы неправильно поняли выборку радиокнопки . В вашем случае вы не хотите реагировать на каждое нажатие радиокнопки, а только после нажатия кнопки "Отправить". Также вам не нужно " yes6 "просто" answer6 ", который либо получает" 0 "для no или" 1 "для yes. Это уже немного уменьшило бы сложность кода ...)

...