首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

按钮视图的ButterKnife @onClick方法不起作用

是因为ButterKnife库在绑定视图时,需要在Activity或Fragment中调用ButterKnife.bind(this)方法来完成视图的绑定操作。同时,@OnClick注解也需要正确使用。

首先,确保已经在项目的build.gradle文件中添加了ButterKnife库的依赖。例如:

代码语言:txt
复制
implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'

然后,在Activity或Fragment中使用ButterKnife.bind(this)方法来绑定视图。例如,在Activity的onCreate方法中添加以下代码:

代码语言:txt
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
}

接下来,确保按钮的点击事件方法使用了@OnClick注解,并且方法名与布局文件中按钮的id对应。例如,如果布局文件中的按钮id为btnSubmit,则对应的点击事件方法应命名为onBtnSubmitClick。同时,该方法的修饰符应为public或private。

代码语言:txt
复制
@OnClick(R.id.btnSubmit)
public void onBtnSubmitClick() {
    // 点击事件处理逻辑
}

此外,还需要在Activity或Fragment中添加以下代码,以确保点击事件的分发:

代码语言:txt
复制
@Override
public void onStart() {
    super.onStart();
    ButterKnife.bind(this);
}

@Override
public void onStop() {
    super.onStop();
    ButterKnife.unbind(this);
}

以上是使用ButterKnife库绑定按钮视图并实现点击事件的基本步骤。但需要注意的是,ButterKnife库在Android Gradle Plugin 3.2.0及以上版本中已经不再推荐使用,推荐使用View Binding或Data Binding来代替。因此,在新的项目中,建议使用View Binding或Data Binding来实现视图绑定和点击事件的处理。

推荐的腾讯云相关产品:无

请注意,以上答案仅供参考,具体实现方式可能因项目配置和版本差异而有所不同。建议查阅ButterKnife库的官方文档或相关资源以获取更详细和准确的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 《Kotin 极简教程》第13章 使用 Kotlin 和 Anko 的Android 开发

    13.3 快速入门实例 下面我们通过一个“我的日程”待办事项应用,来详细介绍使用 Kotlin 混合 Java,使用 Anko 开发的Android 应用的方法。.../ic_content_add" 其中,ic_content_add.png图片是我们添加按钮中间的加号 icon。...我们可以看下按钮控件定义的地方。按钮有一个点击监听函数是定义在视图定义文件里面的。在定义按钮之前,有两个参数 title 和 content 的方法 createTodoFrom 已经被调用了。...onClick(v, realmResults[adapterPosition]) } } 在ViewHolder初始化 View 的时候,我们使用ButterKnife进行了绑定...(caller: View, todo: Todo) } 我们在TodosFragment中实现这个方法: override fun onClick(caller: View, todo

    3.6K30

    【Android】ButterKnife 8.x详解

    不得不承认,在这之前,我对ButterKnife的使用,也只停留在绑定视图和点击事件上。??? 介绍 ButterKnife我已经用了好一段时间了,它除了方便,还是方便。...动态生成绑定事件或者控件的java代码,然后在运行的时候,直接调用bind方法完成绑定,因此你不必担心注解的性能问题。骚年,放心去用吧。...在onCreateView中使用bind方法时,会返回一个Unbinder对象,该对象中有的unbinder方法,可以将Fragment中的View设置为null Adapter中 例:绑定布局中的...ButterKnife.apply(nameViews, View.ALPHA, 0.0f); 点击事件——@OnClick 在使用的过程中,除了@BindView,还有@OnClick也是经常用到的。..."button被点击了", Toast.LENGTH_SHORT).show(); } 参数View就是被点击的视图 如果可以确认View的具体类型,可以这样写。

    1.4K100

    Android进阶之绘制-自定义View完全掌握(四)

    注意,一定要重写带两个参数的构造方法,因为如果我们在布局文件使用该类,将会用这个构造方法实例该类,如果没有就崩溃。 介绍一下一个控件从创建到显示过程中的主要方法。...执行构造方法实例化类 测量,通过measure方法,需要去重写onMeasure方法 如果当前是一个ViewGroup,它还有义务去测量它的孩子 孩子只有建议权,就是说孩子可以建议控件多高多宽,而最后是必须父类去决定宽高的...指定位置,通过layout方法,需要去重写onLayout方法 指定控件的位置,一般View不用重写该方法,只有是ViewGroup的时候才需要去重写它 绘制视图,通过draw方法,需要去重写onDraw...方法 根据上面两个方法的一些参数进行绘制 所以我们自定义View一般只需要重写onMeasure(int,int)方法和onDraw(canvas)方法。...要想实现这样的需求,我们就需要去重写onTouchEvent()方法来监听触摸事件,然后获得按下时的坐标,但是在event对象中,有getX()方法和getRawX()方法,那么我们应该使用哪个方法呢?

    53520

    Butterknife全方位解析

    直接绑定一个方法 @OnClick(R.id.submit) public void submit(View view) { // TODO submit data to server......所有监听方法的参数是可选的 @OnClick(R.id.submit) public void submit() { // TODO submit data to server... }...多个view统一处理同一个点击事件,很方便,避免抽方法重复调用的麻烦 @OnClick({ R.id.door1, R.id.door2, R.id.door3 }) public void pickDoor...给EditText加addTextChangedListener(即添加多回调方法的监听的使用方法),利用指定回调,实现想回调的方法即可,哪个注解不会用点进去看下源码上的注释 @OnTextChanged...a) 首先创建一个视图注解 b) 创建一个注解处理器,用来得到注解的属性与所属类 c) 解析注解,分离组合Class与属性 d) 组合Class与属性,生成新的Java File APT生成的

    73230

    Android注解框架butterknife基本用法

    现在安卓项目开发中,butterknife是比较常用的注解框架,从而简化了findViewById的重复使用,提高了编程的效率 然而为什么要使用butterknife?...一方面是为了提高编程效率,一方面butterknife对系统性能是没有影响的,因为butterknife是在编译的时候生成新的class,不是运行时进行反射,所以对性能不会有影响 butterknife...注解框架 在Android Studio中可以,很快直接引入,我们可以,选择项目->右键->open modules setting,然后选择Dependencies,选择绿色的Add按钮,输入com.jakewharton...(b)butterknife的主要用处 (i)Activity类里使用: Demo:只要使用InjectView就可以,然后在onCreate方法里初始化 ButterKnife.inject(类名.this...; return view; } } (iii)在事件处理里使用 onClickListener可以这样写了 @OnClick(R.id.basic_finish_a_button

    1.2K30

    Android系列之butterknife基本用法

    现在安卓项目开发中,butterknife是比较常用的注解框架,从而简化了findViewById的重复使用,提高了编程的效率 然而为什么要使用butterknife?...一方面是为了提高编程效率,一方面butterknife对系统性能是没有影响的,因为butterknife是在编译的时候生成新的class,不是运行时进行反射,所以对性能不会有影响 butterknife...注解框架 在Android Studio中可以,很快直接引入,我们可以,选择项目->右键->open modules setting,然后选择Dependencies,选择绿色的Add按钮,输入com.jakewharton...butterknife的主要用处 (i)Activity类里使用: Demo:只要使用InjectView就可以,然后在onCreate方法里初始化 ButterKnife.inject(类名.this...; return view; } } (iii)在事件处理里使用 onClickListener可以这样写了 @OnClick(R.id.basic_finish_a_button

    2.1K11

    Android开源框架源码解析系列(3)——ButterKnife源码解析

    ButterKnife是一个专注于Android系统的View注入框架,有了ButterKnife可以很轻松的省去findViewById,ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的...4、使用ButterKnife修饰的方法和控件,不能用private or static 修饰,否则会报错。...(其他的有些注解框架可以) 6、使用Activity为根视图绑定任意对象时,如果你使用类似MVC的设计模式你可以在Activity 调用ButterKnife.bind(this, activity)...7、使用ButterKnife.bind(this,view)绑定一个view的子节点字段。如果你在子View的布局里或者自定义view的构造方法里 使用了inflate,你可以立刻调用此方法。...进行强转然后进行赋值给target,所以我们明白了为什么BindView的注解的类必须是public的 3.如果有标记@OnClick注解,则对view进行点击事件设置 到这里,ButterKnife的源码分析流程基本结束

    1K30

    万万没想到,做防重复点击坑这么多

    将所有的Activity设置为singleTop 对附近的人这个按钮的onClick事件做一个防止重复点击 两种方式都是没问题的,但是,却都有问题,首页我们来分析第一种: 将所有的Activity...在onClick事件的处理中,将处理权转发给submit这个被onClick注解方法处理而已 @Override public void onClick(View v) {..." + clickMethodName + "方法"); } } 只是,ButterKnife的OnClick注解并没有做防重复点击。...(ProceedingJoinPoint joinPoint) throws Throwable { // 取出方法的参数 ,想判是不是 onClick(View viw)这种类型的方法...} }); 哈哈,你妹啊,这不就是活生生的onClick(v)被瞬间就调了两次,妥妥的重复点击了,这肯定就造成页面上这种情况的按钮无法点了,怎么处理,别急,我们发现调用主体不同

    1.5K51
    领券