Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中为自定义视图设置onClick-in-xml在某些版本上不起作用_Java_Android_Android Layout_Android View_Android Custom View - Fatal编程技术网

Java 在android中为自定义视图设置onClick-in-xml在某些版本上不起作用

Java 在android中为自定义视图设置onClick-in-xml在某些版本上不起作用,java,android,android-layout,android-view,android-custom-view,Java,Android,Android Layout,Android View,Android Custom View,我创建自定义视图并在一些xml活动中使用它,然后设置android:onClick=buttonOnClick。我将ButtonNonclick定义为public,并将其写入其活动和设置工具:context。 Activity.java public void buttonOnClick(View view) { validate(view); } layout.xml <LinearLayout xmlns:android="http://schemas.an

我创建自定义视图并在一些xml活动中使用它,然后设置android:onClick=buttonOnClick。我将ButtonNonclick定义为public,并将其写入其活动和设置工具:context。 Activity.java

 public void buttonOnClick(View view) {
        validate(view);
    }
layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    ...
    tools:context="com.test.myapp.Activity">

   <com.test.myapp.GifImageViewComp
      ....
    android:onClick="buttonOnClick"  />
它在Build.VERSION.SDK\u INT>=Build.VERSION\u CODES.LOLLIPOP上工作,但在其他操作系统版本中,自定义视图xml onclick属性尝试从视图类而不是活动中查找处理程序。 我不希望在每个视图上都使用onClick或setOnClickListener的实现,我希望在活动的布局中使用onClick

只是不清楚xml中的按钮和 活动中对单击事件作出反应的方法,除非 在Java文件中显式地查看它的定义。使用安卓:onClick 方法你甚至可以忘记你有一个按钮在你的布局或 这是处理onClick事件的方法

您应该使用而不是android:onClick

调用视图时要调用的回调的接口定义 点击

此方法获取对侦听器的引用,并注册一个回调,以便在单击视图时调用

供参考

确保在XML中设置android:clickable=true。您应该指定此属性


相反,在类中使用onClickListener,并使用customView的id调用onClickWhide设置android:clickable=true。要获得良好的实践,请使用onClickListeneryes,设置android:clickable=true@MohammadJavad仅供参考,安卓:onClick不会在FRAGMENT@IntelliJAmiya,我不使用Fragment,但它在android 5或更高版本中工作
<com.test.myapp.GifImageViewComp
    android:clickable="true"
    android:onClick="buttonOnClick"  />