黄油刀butterknife在Library上的使用(元素值必须为常量表达式)

article/2025/10/21 17:45:05

相信大家都有使用butterknife来为代码节省时间,但是当把项目合并入其他项目,或者是作为一个Library依赖的时候会发现编译会报错。

这里写图片描述
这里写图片描述

控制台显示错误:元素值必须为常量表达式。为什么会这样?仔细查看发现在library中注解生成的R文件里是没有final标识的,正常是有的,导致识别不了R文件。好在butterknife在8.0之后提供了解决的办法
https://github.com/JakeWharton/butterknife

第一步: 在根gradle文件中添加

dependencies {classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'classpath 'com.jakewharton:butterknife-gradle-plugin:8.6.0'}

第二步:在需要使用R2的module的gradle中添加


apply plugin: 'com.android.library'
apply plugin: 'android-apt'
apply plugin: 'com.jakewharton.butterknife'

compile 'com.jakewharton:butterknife:8.6.0'
apt 'com.jakewharton:butterknife-compiler:8.6.0'

然后在整个项目或者整个module中把 @BindView(R. 替换成@BindView(R2.
手动把 OnClick注解改成R2

//正确写法@OnClick(R2.id.btn_login)public void onLogin(View view){}

还有这种多个点击事件写在一起的也要分开来,像下面这种就需要写成两个

//这样写会报错
@OnClick({R2.id.back, R2.id.txt_bind_we_chat_btn, R2.id.txt_bind_phone_btn})public void onClick(View view) {switch (view.getId()) {case R2.id.back:break;case R2.id.txt_bind_phone_btn:break;case R2.id.txt_bind_we_chat_btn:break;}
}

还有Menu的点击事件 item.getId获取到的ID也是对不上的,可以用getTIttle()来解决

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {String tittle=item.getTitle().toString();switch (tittle) {case "提交":onSubmit();return true;case "退房":actionDel();return true;case "修改":actionAlter();return true;}return super.onOptionsItemSelected(item);}

如果觉得自己手动改很麻烦可以参考下面这位大神的做法

http://www.jianshu.com/p/a101cec2c960

记得要先绑定哦 ButterKnife.bin(this);

以上


http://chatgpt.dhexx.cn/article/R1TNshhZ.shtml

相关文章

黄油刀 butterKnife

黄油刀 butterKnife: 自动findViewByID(),自动添加点击事件onClick(); 步骤: 1.引入依赖包 butterknife:8.4.0 jakewharton:butterknife:8.4.0 2.安装插件 Android ButterKnife Zelezny 3.配置build 1、工程的gradle文…

ButterKnife(黄油刀)基本使用与源码解析

前言 ButterKnife又称黄油刀,是一款快速绑定Android视图中字段和方法的注解框架,也是Android开发中比较常用的一款快速注解框架,通过ButterKnife的合理运用,我们可以避免重复地书写findViewById,在各种场合下快速地绑…

黄油刀使用方法

一.首先在最外层的build.gradle里面导入 dependencies中导入 classpath com.neenbedankt.gradle.plugins:android-apt:1.8 例: 二.在内层 build.gradle 里面导入 compile com.jakewharton:butterknife:8.4.0 annotationProcessorcom.jakewharton:butterknife-co…

一把好用的黄油刀——Butter Knife

一把好用的黄油刀——Butter Knife 下载JAR包之后需要进行简单的Eclipse配置 Introduction(官方简介,稍后译) Annotate fields with BindView and a view ID for Butter Knife to find and automatically cast the corresponding view…

Android神兵利器之黄油刀的使用(ButterKnife)

黄油刀的使用是非常简单的事情,下载的时候需要注意的有两步: 1.下载jar,而下载jar包则有两种方法: A: File->Project Structure->Dependencies->Library dependency 中直接搜索butterknife选择任意一个就可…

android[butterKnife(黄油刀)史诗详细使用方法]

butterKnife中文又名黄油刀,是一款Android视图的字段和方法绑定快速注解框架。 1.首先把查看方式改变成Android。 2.打开Gradle Scripts层下的build.radle注意括号内是module的文件。 3.将代码粘贴到如下位置。 implementation com.jakewharton:butterknife:10.2.3…

butterknife----黄油刀

Butter Knife,专门为Android View设计的绑定注解,专业解决各种findViewById。 简单使用: 添加依赖: Download dependencies { compile com.jakewharton:butterknife:8.8.1 annotationProcessor com.jakewharton:butterknife-com…

黄油刀使用方法(butterknife)

使用心得: 1.Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind 2.Fragment ButterKnife.bind(this, mRootView); 3.属性布局不能用private or static 修饰,否则会报错 4.setConte…

Android:butterKnife(黄油刀的简单使用

butterKnife中文又名黄油刀,是一款Android视图的字段和方法绑定快速注解。 1.1首先把查看方式改变成Android。 implementation com.jakewharton:butterknife:10.2.3// 添加此依赖 annotationProcessor com.jakewharton:butterknife-compiler:10.2.3// 添加此规…

Android中ButterKnife(黄油刀)的详细使用

最近刚学会使用ButterKnife,真是超级好用,忍不住要分享给大家了。 写在前面:该文档使用7.0版本,8.0版本方法名有所改动,建议看官方文档,整体业务逻辑和原理没什么变动。 在android编程过程中,我…

黄油刀

【攻克Android (34)】Butter Knife 黄油刀 博客分类: 攻克Android系列 本文围绕以下四个部分展开: 一、注解式框架 二、Butter Knife 案例一 案例二:用 ListView 展示一个列表数据,每个Item里含有一个Button,可以…

ButterKnife黄油刀

ButterKnife黄油刀 1、强大的View绑定和Click事件处理功能,简化代码,提升开发效率 2、方便的处理Adapter里的ViewHolder绑定问题 3、运行时不会影响APP效率,使用配置方便 4、代码清晰,可读性强 怎么配置 在android Studio项…

Android版黄油刀简介

Butter Knife? 黄油刀是一个非常好的Android视图注入库。 黄油刀有助于减少许多样板代码(例如,重复的findViewById调用)。 如果您处理的活动具有大量的视图,那么您就会知道,将代码与“ findViewById”集群在一起时&a…

Android(ButterKnife)黄油刀使用详解

一、什么是ButterKnife黄油刀? 1.1ButterKnife中文又名黄油刀,是一款Android视图的字段和方法绑定快速注解框架。 1.2使用方法: 1.打开budild.gradle 文件 2.在dependencies 中添加 implementation com.jakewharton:butterknife:10.2.3// …

Android Butterknife(黄油刀) 使用方法总结

转载请标明出处:http://blog.csdn.net/donkor_/article/details/77879630 前言: ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWha…

ArrayList$SubList.add导致的java.lang.StackOverflowError : null :慎用subList

项目场景: 上线后遇到的1个StackOverflowError问题,这里做个分析。通过日志文件可以看到: java.lang.StackOverflowError: nullat java.util.ArrayList$SubList.add(ArrayList.java:1047)at java.util.ArrayList$SubList.add(ArrayList.jav…

ArrayList和SubList的坑面试题

👨🏻‍🎓博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家🌟 🌈擅长领域:Java、大数据、运维、电子 &#x…

NetSuite Sublist解释

今朝汇编一下Sublist主题的知识点以备忘。 2个数据源类型 Related Record - 以Saved Search建立的关联记录;Child Record - 父子表; 1. Related Record Saved Search关键点 这种形式的Sublist是利用Saved Search作为Sublist的数据源,将某…

各位,请慎用 subList!原来这么多坑!!

点击关注公众号&#xff0c;Java干货及时送达 1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用&#xff1a; List<Integer> statusList Arrays.asList(1, 2); System.out.println(statusList); System.out.println(statusList.contains(1…

Java中List的subList()方法及使用注意事项

List<Object> list new Arraylist<>();List<Object> subList list.subList(0, 5);其中subList(0, 5)取得的是下标为0到4的元素,不包含下标为5的元素. java.util.List中的subList方法返回列表中指定的 fromIndex&#xff08;包括 &#xff09;和 toIndex&a…