setPressed不起作用

时间:2016-07-03 12:43:11

标签: java android eclipse button

我的代码中有这个,而且.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;

    }
 });

有什么问题?它没有给我任何错误,当我打开它并单击它时它不起作用。按下一次后按下按钮就可以了。

3 个答案:

答案 0 :(得分:2)

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;
       }
    });

答案 1 :(得分:1)

您的代码似乎没有错,它正如您所做的那样,它将视图的内部状态设置为"按下"或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;

    }
 });

答案 2 :(得分:0)

试试这种方式。

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