setPressed 不工作

Posted

技术标签:

【中文标题】setPressed 不工作【英文标题】:setPressed is not working 【发布时间】: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;

    
 );

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

【问题讨论】:

【参考方案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 外部声明按钮或创建单独的函数来避免这种情况。有用。我已经测试过了。

以上是关于setPressed 不工作的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中将按钮置于按下状态

马上五十岁了,工作得很不开心,非常郁闷,工作重要还是生活重要?

模拟服务工作者/节点不工作,我不明白为啥

随机 SQL 连接问题。工作,然后不工作,然后工作,然后 BAM!再也不会工作了?

修改 VBA 使其在两个工作簿之间工作,而不是在两个工作表之间工作

SKSpriteNode .run 不工作或不完全工作