Android:点击的布尔值和button.isPressed()之间有什么区别?

时间:2018-02-10 02:02:48

标签: android boolean onclicklistener

如何定义触摸屏上的点击/点按,有很多选项。例如,其中一个是设置布尔值。

布尔值示例:

boolean buttonClicked = true;

button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                if (buttonClicked) {
                 //do that and this
                }
            }
        });

还有isPressed()方法:

button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                    if (button.isPressed()) {
                     //do that and this
                    }
                }
            });

它们之间究竟有什么区别? 何时为什么我是否使用布尔值和方法isPressed()

2 个答案:

答案 0 :(得分:0)

因为您在两个示例中都指的是一个按钮,我认为您指的是用户点击按钮,而不仅仅是屏幕上的随机触摸。

话虽如此,你提供的两个例子都不好。

  1. 在您的第一个示例中,布尔值无用,因为它始终为true,因此始终会到达//do that and this
  2. 在您的第二个示例中,您的if语句无用,因为仅在点击按钮时才会显示onClick方法。
  3. 听按钮按下的好方法是使用这样的点击监听器:

    Button button = (Button) findViewById(R.id.buttonId);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Code placed here will run every time the button is tapped
        }
    });
    

    ...其中R.id.buttonId是布局中按钮的ID。

答案 1 :(得分:0)

如果您需要为视图定义点击事件,可以使用 onClickListener onTouchListener 。 有关更多信息,请查看Android官方文档。

在考虑第一个代码片段时,您可以使用布尔值对按钮单击事件执行另一个操作。像这样的例子,

boolean buttonClicked = false;

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              //true after button clicked
               buttonClicked = true;
            }
        });

        //if buttonClicked equals true
        if (buttonClicked){
            //perform operation only after button clicked
        }

在考虑您的第二个代码段时,内部不需要button.isPressed() 按钮的onClick()回调。因为检查button.isPressed()所要完成的操作是在按钮onClick()回调中没有它的情况下完成的。

请记住这些事情。

  • isPressed()View Class
  • 的公共方法
  • ButtonView Class
  • 的子类
  • isPressed()也是Button类的公共方法。
来自Android官方文档的

关于 isPressed()

  

指示视图当前是否处于按下状态。除非   显式调用setPressed(boolean),只有可点击的视图才能   进入按下状态。   如果当前按下了视图,则返回true,否则返回false。