首页 > 解决方案 > setEnabled 在 Android 中的某些设备上不起作用

问题描述

我的屏幕上有一个按钮,当用户进行一些操作时,它会动态启用或禁用。这是更改按钮状态的代码:

    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 Emulator(我使用的是 Pixel XL)上,即使在用户点击之后,按钮也会保持禁用状态。但是,如果我单击按钮,它就会启用并正常执行单击。

任何人都知道这是否是Android上的错误,还是我做错了什么?

标签: javaandroidbutton

解决方案


我在这里找到了错误。

我正在使用一个外部库来管理我的应用程序上的一些东西,并且这个库正在返回一个不是主线程的线程上更新按钮所需的信息。

我通过将我的代码重定向到主线程解决了这个问题。


推荐阅读