【问题标题】:How to disable button once it is clicked and enable it again once another button is clicked in android如何在单击后禁用按钮并在android中单击另一个按钮后再次启用它
【发布时间】:2016-07-15 11:13:27
【问题描述】:

我的问题是,如何在单击按钮后禁用按钮,并在单击另一个按钮后再次启用它。 例如,如果我单击按钮 1 时有 4 个按钮,它将被禁用,当我单击按钮 2 时,按钮 2 将被禁用,而按钮 1 将再次启用。

目前我正在使用此代码,但一旦单击它就无法启用按钮。

Button.OnClickListener btnOnClickListner = new Button.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (v == btn1) {
            if (v.isEnabled()) {
                v.setEnabled(false);
            }
          // my code
         } else if (v == btn2) {
            if (v.isEnabled()) {
                v.setEnabled(false);
            }
          // my code
        } else if (v == btn3) {
            if (v.isEnabled()) {
                v.setEnabled(false);
            }
          // my code
        } else if (v == btn4) {
            if (v.isEnabled()) {
                v.setEnabled(false);
            }
          // my code
        }

【问题讨论】:

    标签: android button


    【解决方案1】:

    试试这个

    // Create a global button variable
    Button flagButton = null;
    
    Button.OnClickListener btnOnClickListner = new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
    
            if(flagButton == null)
                flagButton = (Button)v;
            else
                flagButton.setEnabled(true);
    
            v.setEnabled(false);
            flagButton = (Button)v;
    
            if (v == btn1)
              // my code
            else if (v == btn2)
              // my code
            else if (v == btn3)
              // my code
            else if (v == btn4)
              // my code
            }
    }
    

    【讨论】:

      【解决方案2】:

      使用 btn2.setEnabled(true);

      Button.OnClickListener btnOnClickListner = new Button.OnClickListener() {
          @Override
          public void onClick(View v) {
              if (v == btn1) {
                  if (v.isEnabled()) {
                      v.setEnabled(false);
                      btn2.setEnabled(true);
                      btn3.setEnabled(true);
                      btn4.setEnabled(true);
                  }
                // my code
               } else if (v == btn2) {
                  if (v.isEnabled()) {
                      v.setEnabled(false);
      
                      btn1.setEnabled(true);
                      btn3.setEnabled(true);
                      btn4.setEnabled(true);
                  }
                // my code
              } else if (v == btn3) {
                  if (v.isEnabled()) {
                      v.setEnabled(false);
      
                      btn1.setEnabled(true);
                      btn2.setEnabled(true);
                      btn4.setEnabled(true);
                  }
                // my code
              } else if (v == btn4) {
                  if (v.isEnabled()) {
                      v.setEnabled(false);
      
                      btn1.setEnabled(true);
                      btn3.setEnabled(true);
                      btn4.setEnabled(true);
                  }
                // my code
              }
      

      【讨论】:

      • @Jois 最好删除,这是因为在这种情况下,您不确切知道哪些按钮被禁用(如果您有一些标志,是的,但在这种情况下您没有),下次在写一些答案之前考虑一下;)
      【解决方案3】:

      其他按钮只需 setEnabled(true) 如下:

      Button.OnClickListener btnOnClickListner = new Button.OnClickListener() {
          @Override
          public void onClick(View v) {
              if (v == btn1) {
                  if (v.isEnabled()) {
                      v.setEnabled(false);
                      btn2.setEnabled(true);
                      btn3.setEnabled(true);
                      btn4.setEnabled(true);
                  }
                // my code
               } else if (v == btn2) {
                  if (v.isEnabled()) {
                      v.setEnabled(false);
      
                      btn1.setEnabled(true);
                      btn3.setEnabled(true);
                      btn4.setEnabled(true);
                  }
                // my code
              } else if (v == btn3) {
                  if (v.isEnabled()) {
                      v.setEnabled(false);
      
                      btn1.setEnabled(true);
                      btn2.setEnabled(true);
                      btn4.setEnabled(true);
                  }
                // my code
              } else if (v == btn4) {
                  if (v.isEnabled()) {
                      v.setEnabled(false);
      
                      btn1.setEnabled(true);
                      btn3.setEnabled(true);
                      btn4.setEnabled(true);
                  }
                // my code
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-11
        • 2021-04-02
        • 1970-01-01
        • 1970-01-01
        • 2019-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多