如何保持按钮按下直到方法结束

3
我需要一直按住一个按钮直到方法结束,因为在按钮保持按下状态期间用户不能再次按下它。
我尝试了这个:
在创建时:
Button btnSend= (Button) findViewById(R.id.btnSend);
btnSend.setOnClickListener(onClickbtnSend);

方法:
Button.OnClickListener onClickbtnSend= new Button.OnClickListener() {
   @Override
   public void onClick(View v){
     try{
         v.setPressed(true);

         //do something ......     

     } catch(Exception e){
       e.printStackTrace();
     }
   v.setPressed(false);
}

有人有想法吗?谢谢。

常见做法是禁用/启用按钮。我建议你研究一下这个。 - Ben Kane
1
“//do something” 是一个后台任务吗?如果不是,那么您就不需要这样做。原因是 onClick 方法将在方法完成之前不会再次被调用(因为 UI 被阻塞)。这是 Android 的默认行为。请澄清现在出了什么问题。 - Amulya Khare
首先,感谢您的帮助。所以,这是一个背景任务,Amulya Khare。 - lfrancatto
Amulya Khare,我只需要在onClick时,按钮保持按下状态直到方法结束。 - lfrancatto
请问你能否贴出完整的方法。看了你的代码,我可能可以更快地帮助你解决问题。 - Amulya Khare
2个回答

1

由于您的按钮似乎有两个状态(忙或不忙),因此您可能希望使用ToggleButton。


谢谢Frank,但是这个组件在我的情况下不适用。 - lfrancatto

0
我找到了这个解决方案:
在创建之前:
private boolean pressionado = false;

方法:

Button.OnClickListener onClickbtnSend= new Button.OnClickListener() {
  @Override
  public void onClick(View v){

    if(pressionado){
      return;
    }

    pressionado = true;

    try{
        //do something background in task

    } catch(Exception e){
       e.printStackTrace();
        pressionado = false;
    }
}

我不知道这是否是更好的解决方案,但对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接