Как добавить функцию, когда я отключаю кнопку или представление? - PullRequest
0 голосов
/ 17 июня 2020

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

1. Создал логическую переменную, которая по умолчанию - false (var isButtonClicked = false или isViewClicked),

2. Затем, когда я нажимаю кнопку (или представление) (в onClickListener), я делаю эту переменную истинной,

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

1 Ответ

1 голос
/ 17 июня 2020

Я считаю, что ваше слово «unclick» означает «щелкнул второй раз».

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

private var clickedButton: View? = null
lateinit val buttons: List<Button> // put the buttons in a list and assign to this in onCreate

// Set this listener on each button.
val buttonListener = OnClickListener { view ->
    when (view) {
        clickedButton -> {
            clickedButton = null
            // other things you want to do when toggling the button off
        }
        null -> {
            clickedButton = view
            // other things you want to do when toggling a button on
        }
        else -> {} // Do nothing. Some other button is toggled on.
    }
}

Но может быть предпочтительнее фактически отключить все кнопки, которые не включены, чтобы они визуально выглядели так, как будто вы не можете их нажимать. В этом случае ваш слушатель должен активно установить включенное состояние всех кнопок. Примерно так:

private var isAButtonPressed = false
lateinit val buttons: List<Button> // put the buttons in a list and assign to this in onCreate

// Set this listener on each button.
val buttonListener = OnClickListener { view ->
    if (isAButtonPressed) {
        buttons.forEach { it.enabled = true }
        // other things you want to do when toggling a button off
    } else {
        buttons.forEach { it.enabled = it == view }
        // other things you want to do when toggling a button on
    }
    isAButtonPressed = !isAButtonPressed 
}

Вы также можете рассмотреть возможность использования ToggleButton, который имеет отмеченные и непроверенные состояния.

...