setEnabled не работает на некоторых устройствах в Android - PullRequest
1 голос
/ 28 февраля 2020

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

    private void setContinueButtonStatus() {
        boolean status = false;

        // Every time user selects a ticket this is increased
        for (TicketSpecification specification : ticketSpecificationList.specifications) {
            if (specification.getMyCount() > 0) {
                status = true;
                break;
            }
        }

        findViewById(R.id.btnContinue).setEnabled(status);
    }

Моя кнопка xml:

    <Button
        android:id="@+id/btnContinue"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:enabled="false"
        android:text="@string/continue_button"
        android:layout_alignParentBottom="true"/>

Моя проблема в том, что этот код работает нормально в Moto G5S, делая кнопку включенной или не после взаимодействия с пользователем.

Но на Galaxy S9 и Android Эмулятор (я использую Pixel XL) кнопка остается отключенной даже после нажатия пользователем. Но, если я нажимаю на кнопку, она становится активной и выполняет щелчок нормально.

Кто-нибудь знает, если это ошибка на Android, или я что-то не так делаю?

1 Ответ

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

Я нашел ошибку здесь.

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

Я исправил проблему, перенаправив код в основной поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...