java - 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上的错误,还是我做错了什么?
解决方案
我在这里找到了错误。
我正在使用一个外部库来管理我的应用程序上的一些东西,并且这个库正在返回一个不是主线程的线程上更新按钮所需的信息。
我通过将我的代码重定向到主线程解决了这个问题。
推荐阅读
- mysql - 如何导出 Postgresql 数据库,以便在 MySQL 中使用?
- html - WordPress style.css 中的预期 RBRACE 错误
- docker - Docker Compose - getaddrinfo 失败:名称或服务未知
- ruby-on-rails - How to reduce select commands in a Simple one table query. Rails
- spring-boot - jsf primefaces和Spring Boot项目组件注入问题
- jquery - 在文本输入上使用 jquery 进行 contenteditable 并包含特定文本显示 div
- python - 在没有 Pandas 的情况下清理 CSV 中的数据
- python - 存储包含数据帧的字典的最有效方法
- terraform-provider-azure - 有没有办法在 terraform 中定义允许的值?
- python - Python odeint 函数在求解耦合微分方程时不起作用