首页 > 解决方案 > 在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);

    }
});

标签: androidbuttonpostdelayed

解决方案


基本上,您在代码中使用 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));

推荐阅读