Java 在调用OnClick之前调用一个方法

Java 在调用OnClick之前调用一个方法,java,android,android-studio,onclick,Java,Android,Android Studio,Onclick,我一直在谷歌上和论坛里寻找我的问题,但到目前为止我还没有答案。我正在使用android studio用Java编写一个应用程序 问题是:在一个类中,我重写了OnClick()方法,因为我必须实现很多视图 现在我想在调用OnClick()之前调用一个函数。 我的意思是,例如,如果用户点击一个按钮,在调用OnClick()之前,我希望调用我的一个方法。 有人知道怎么做吗 提前谢谢你重写onClick()方法,然后编写你想要的第一个逻辑。像萨加尔说的那样编写你自己的监听器 这一逻辑与萨加尔的答案非常相

我一直在谷歌上和论坛里寻找我的问题,但到目前为止我还没有答案。我正在使用android studio用Java编写一个应用程序

问题是:在一个类中,我重写了OnClick()方法,因为我必须实现很多视图

现在我想在调用OnClick()之前调用一个函数。 我的意思是,例如,如果用户点击一个按钮,在调用OnClick()之前,我希望调用我的一个方法。

有人知道怎么做吗


提前谢谢你

重写
onClick()
方法,然后编写你想要的第一个逻辑。

像萨加尔说的那样编写你自己的监听器

这一逻辑与萨加尔的答案非常相似

编写抽象类,如下所示

注意:在上面的代码中,它实现了View.OnClickListener,所以这个逻辑将适用于扩展视图超类的视图。如果您想为需要Dialog interface onClick的对象使用上述逻辑,则需要为DialogInterface.onClick Listener修改它

因此,您可以使用上述逻辑,如下所示

我想在调用OnClick()之前调用一个函数

可以在onClick()中使用如下逻辑:


使用返回类型为布尔值的检查权限方法实现自定义的OnClickListener,如下所示

 public abstract class MyOnClickListener implements OnClickListener {
        @Override
        public void onClick(View v) {
            //Do common action

            if(condidtionSatisfied){
                performClick(v);
            }
        }

        public abstract void performClick(View v);
    }
onClickListener
设置为任何组件,如下所示:

button.setOnClickListener(new MyOnClickListener() {
            @Override
            public void performClick(View v) {
                 //Execute post click action
            }
        });

这将确保为所有视图调用您的公共代码,这将是一种更干净的方法。

您可以调用
onClick()
顶部的另一个方法吗?问题是我想在我的方法中检查用户是否有权单击视图。如果他确实有,那么我希望这个方法调用OnClick。但也许还有另一种方法可以做到这一点。这种逻辑与#sagar不同,也不需要。您可以简单地重写onclick并放置所有代码,而不是创建单独的方法。两者都是一样的。@JyotiJK我很感激。但是,如果您有一些应该在onClick之前执行的一般逻辑,该怎么办?在这种情况下,用户需要在OnClick抽象类中的beforeClick方法和每个视图不同的逻辑中编写这样的逻辑,它将位于setOnClickListener的beforeClick内部(新的OnClick(){beforeClick(视图v)})
if(userhaspermission())//your method to check if the user has permission
{
    //your onclick operation code
}
 public abstract class MyOnClickListener implements OnClickListener {
        @Override
        public void onClick(View v) {
            //Do common action

            if(condidtionSatisfied){
                performClick(v);
            }
        }

        public abstract void performClick(View v);
    }
button.setOnClickListener(new MyOnClickListener() {
            @Override
            public void performClick(View v) {
                 //Execute post click action
            }
        });