【问题标题】:setPressed is not workingsetPressed 不工作
【发布时间】:2016-11-05 07:41:33
【问题描述】:

我的代码中有这个,而 .setPressed 不起作用:

Button btndesligado = (Button) findViewById(R.id.button12);
 btndesligado.setOnClickListener(new OnClickListener() { //Botão para pôr silêncio!

    @Override
    public void onClick(View v) {

        btndesligado.setPressed(true);
        som = false;
        vibrar = false;

    }
 });

怎么了?它没有给我任何错误,只是当我打开它并单击它时它不起作用。应该是按一次后才按的。

【问题讨论】:

    标签: java android eclipse button


    【解决方案1】:

    Android 正在更改 setPressed 之前和之后的 onClickEvent

    所以把你的代码改成这段代码

    btndesligado.setOnClickListener(new OnClickListener() { //Botão para pôr silêncio!
    
        @Override
        public void onClick(View v) {
    
            btndesligado.setPressed(true);
            som = false;
            vibrar = false;
    
        }
     });
    

    到这里

     btndesligado.setOnTouchListener(new OnTouchListener() {
    
            @Override
            public boolean onTouch(View v, MotionEvent event) {
    
                // show interest in events resulting from ACTION_DOWN
                if (event.getAction() == MotionEvent.ACTION_DOWN) return true;
    
                // don't handle event unless its ACTION_UP so "doSomething()" only runs once.
                if (event.getAction() != MotionEvent.ACTION_UP) return false;
    
    
                btndesligado.setPressed(true);    
                som = false;
                vibrar = false;                
                return true;
           }
        });
    

    【讨论】:

      【解决方案2】:

      您的代码似乎没有问题,它像您一样工作,它将视图的内部状态设置为“按下”,或者将视图的内部状态从先前设置的“按下”状态恢复为 false。而你把它放在按钮的onClick 中意味着它只有在你按下按钮后才会起作用,

      如果你想按下或恢复,那么就这样做,

      Button btndesligado = (Button) findViewById(R.id.button12);
       btndesligado.setPressed(true);
       btndesligado.setOnClickListener(new OnClickListener() { //Botão para pôr silêncio!
      
          @Override
          public void onClick(View v) {
              som = false;
              vibrar = false;
      
          }
       });
      

      【讨论】:

        【解决方案3】:

        试试这个方法。

         btndesligado.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    btndesligado.setPressed(true);
                    som = false;
                    vibrar = false;
                }
            });
        

        【讨论】:

        • 现在它说要在修饰符 btndesligado 中放入 final,但即使放入 final 也不起作用。
        • 不要将其声明为最终...通过在 onCreate 外部声明按钮或创建单独的函数来避免这种情况。有用。我已经测试过了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-10
        • 1970-01-01
        • 2019-01-19
        • 1970-01-01
        • 2018-12-22
        相关资源
        最近更新 更多