kotlin изменяет значение переменной внутри функции (SetOnClickListner)

#android #kotlin

#Android #kotlin

Вопрос:

У меня есть две кнопки btn1 (scan_sac) и btn2 (scan_scelle) и два текстовых представления t1 (ed_idSac) и t2 (ed_scelle). Внутри onClickListner каждой кнопки я вызову функцию, которая запускает камеру для считывания штрих-кода. Эта камера возвращает значение штрих-кода, считанного в функции onActivityResu< И внутри этой функции (onActivityResult) Я обновляю значение одного из двух TextViews

В соответствии с нажатой кнопкой я изменю значение соответствующего textview :

  • Если щелкнуть btn1, t1 будет обновлен
  • если щелкнуть btn2, t2 будет обновлен

Теперь я застрял при тестировании, какая кнопка нажата для обновления соответствующего TextView. Я привязан к использованию логической строки, чтобы проверить, какая кнопка нажата. Если значение scelle равно true, то выбирается scan_scelle (btn2)

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

1. В чем ваш вопрос? Если вы не предоставите какой-либо код, вам будет трудно помочь

Ответ №1:

 override fun onActivityResult(requestCode: Int, resultCode: Int, data:Intent)
  

Используйте другой код запроса при нажатии кнопок b1 и b2….

Ответ №2:

Итак, если я правильно понимаю, вы хотите знать, какая кнопка нажата, чтобы вы могли обновить правильное представление текста. Решением было бы иметь два логических значения для каждой кнопки, и при нажатии кнопки вы установите этому логическому значению значение true. Позже в Activityresult вы сможете проверить эти логические значения и обновить соответствующие текстовые представления.

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

1. Я устал это делать, но значения логических значений обновляются на локальном? Я определил нажатую переменную: Boolean = false. Внутри btn1. Нажатие кнопки OnclickListner = false. Но когда я проверяю вне функции, значение pressed не обновляется.

2. потому что внутри onClick вам нужно установить это логическое значение в true.

3. В качестве альтернативы вы могли бы установить разные коды запроса для разных кнопок.

Ответ №3:

используйте разные requestCode для обеих кнопок при проверке вашего onActivityResult метода requestCode и поместите вашу строку в respected textView

Ответ №4:

 var buttonIdentity :false
val button1= findViewById<Button>(R.id.textview)
button1.setOnClickListener(clickListener)

val button2 = findViewById<Button>(R.id.button)
button2.setOnClickListener(clickListener)

val clickListener = View.OnClickListener {view ->

    when (view.getId()) {
        R.id.button1-> buttonIdentity =true
        R.id.button2 -> buttonIdentity  =false
    }
}