Имитация нажатия кнопки другим нажатием кнопки - PullRequest
0 голосов
/ 23 апреля 2020

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

fun onTwo(view: View) {
            button1.callOnClick()
            button1.isPressed = true
                    }

Однако проблема, с которой я сталкиваюсь, заключается в том, что она замораживает кнопку 1, как будто она нажата, пока не будет нажата снова. У кого-нибудь есть решение для этого?

Ответы [ 3 ]

1 голос
/ 23 апреля 2020

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

val button1 = findViewById(R.id.btn1ID) as Button
button1.setOnClickListener {
    val button2 = findViewById(R.id.btn2ID) as Button
    button2.performClick()
}

Заменить R.id.btn1ID и R.id.btn2ID на их соответствующий идентификатор (a).

Ссылка: executeClick ()


Вы также можете создать служебную функцию, чтобы использовать ее без создание избыточных переменных следующим образом:

@Suppress("UNCHECKED_CAST")  
fun Activity.findButtonById(@IdRes res : Int) : Button =
    findViewById(res) as Button

// and then in your create method of activity:
findButtonById(R.id.btn1ID).setOnClickListener {
    findButtonById(R.id.btn2ID).performClick()
}

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

В конце концов я решил эту проблему, используя сопрограммы в следующем виде:

fun onTwo(view: View){
                GlobalScope.async{
                    delay(100)
                    button1.isPressed = false
                    GlobalScope.cancel()
                }
                button1.setPressed(true)
                button1.performClick()

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

Попробуйте метод executeClick (), как показано ниже:

fun onTwo(view: View) 
{
    button1.performClick()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...