在Android开发中,当我们使用Button的onClick属性来绑定一个方法时,有时会遇到“Button OnClick() not detecting public method”的错误提示。这个错误的原因通常是因为绑定的方法不是public的。
例如,我们在xml中定义一个Button,并且给它设定了一个OnClick属性值为“myMethod”:
然后,在我们的Activity中,我们编写了一个名为“myMethod”的方法:
private void myMethod() { // do something }
然而,这样的绑定方式会导致OnClick事件无法被正确绑定,因为myMethod不是public的。正确的做法是将myMethod改为public的:
public void myMethod() { // do something }
这时,OnClick事件就可以正常绑定了。
但是,还有一种情况需要注意:如果我们在使用Kotlin编写代码的时候,需要确保Kotlin方法被定义为“public”或者“internal”,并且需要使用Kotlin的注解来标记该方法为OnClick,例如:
@androidx.annotation.RequiresApi(Build.VERSION_CODES.O) fun myMethod(view: View) { // do something }
其中,“view”参数是表示按钮的视图。
这样便可以成功绑定OnClick事件了。