android - 在Android中单击后如何禁用按钮1秒?
问题描述
我正在使用以下代码来使用按钮。我工作。(sendBtn 是片段中的一个按钮)
sendText = view.findViewById(R.id.send_text);
View sendBtn = view.findViewById(R.id.send_btn);
sendBtn.setOnClickListener(v -> send(sendText.getText().toString()));
现在我想在单击后禁用按钮 1 秒
我找到了以下解决方案,但上面的代码工作 “没有onClick(View v) ”方法并且没有在类中实现View.OnClickListener。在这种情况下如何提供延迟。. 没有 onClick 方法的代码是如何工作的。
@Override
public void onClick(View v) {
((Button) findViewById(R.id.click)).setEnabled(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
((Button) findViewById(R.id.click))
.setEnabled(true);
}
}, 1000);
}
});
解决方案
基本上,您在代码中使用 lambda,其中v->{}
表示onCLick(View v)
函数。
sendBtn.setOnClickListener(v -> send(sendText.getText().toString()));
您可以执行以下操作以禁用按钮 1 秒
void doOnSendButtonClick(View v){
//Send the message (your logic here)
send(sendText.getText().toString());
//Disable button
sendBtn.setEnabled(false);
//enable button after 1000 millisecond
new Handler(Looper.getMainLooper()).postDelayed(() -> {
sendBtn.setEnabled(true);
}, 1000);
}
并在用户单击按钮时调用此方法
sendButton.setOnClickListener(view -> doOnSendButtonClick(view));
推荐阅读
- c# - UnauthorizedAccessException 正在下载文件 C#
- c# - 从外部网页登录到 ASP.Net Forms Authentication 站点
- spring-boot - Spring Session Attributes 表名区分大小写
- php - 基于 Woocommerce 中购物车商品库存数量的自定义通知
- java - java - 如何将另一个项目A连接到项目B作为java springboot中的依赖项?
- oop - “广泛”使用的纯面向对象语言应该是什么样子?
- css - Centering output text in a primefaces datatable column
- python-3.x - Multi-column or block melt and then pivot?
- linux - 脚本抛出“写入错误:中断的系统调用”
- android - 如何在弹出对话框中保存 textview 值?