一脸懵逼之Kotlin使用ButterKnife无效问题
来源:互联网 发布:tensorflow lite官网 编辑:程序博客网 时间:2024/05/18 12:37
此文章适用于Android Studio3.0之前的正式版本,现在3.0正式版已经出来了,并不需要自己手动去配置
前端时间太忙导致天天加班天天没空;现在呢,每个星期出一个功能,哎,蛋疼,不过这就是程序员的宿命吧,认了。。。
不过呢,自从出了Kotlin之后呢,只看了一点点小东西,只大概知道了一点点语法,对于在Kotlin上引用其他的一些框架等,自己还不熟悉,学习的路很漫长,趁着有空学习学习,写写博客。。。
今天呢,想用Kotlin来写一个程序,可是用findViewById来获取控件觉得不方便,就想着ButterKnife能否在Kotlin也用上呢?既然Kotlin也是基于Java,写Android方面也是同样编译成J2ME,那为什么不能用ButterKnife呢???好了,废话不多说,直接说说我使用的过程和遇到的 问题,还有解决方式吧,网上搜的太碎片化,甚至都是没用的,还是自己搞出来才有印象。
在Kontlin使用ButterKnife:
1、我创建了一个普通的Android项目,在该Android项目当中引用了Kontlin框架,配置如下:
打开项目主目录下的build.gradle文件,定义好kotlin版本和butterknife的相关版本号:
buildscript { ext.kotlin_version = '1.1.3-2' ext.butterknife_version='8.6.0' //省略}2、同样在该文件当中:
dependencies { classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0' classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' //加上这行 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.jakewharton:butterknife-gradle-plugin:$butterknife_version"}其中classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
是在普通Android项目当中引用butterknife需要添加的配置,详情可看我上一篇文章,在这里不多做赘述了。
后面两句就是加上kotlin和butterknife插件
3、接着,打开app目录当中的build.gradle文件,添加
apply plugin: 'kotlin-android'//注解框架需要apply plugin: 'android-apt'并且在 dependencies {}当中添加相关的第三方包,如下配置:
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"//注解框架需要
compile 'com.jakewharton:butterknife:$butterknife_version'
apt "com.jakewharton:butterknife-compiler:$butterknife_version"
好了,到此为止,你会发现你在普通的Activity类当中使用ButterKnife框架相应的注解式开发没有任何问题,可是问题来了,当你新建了一个Kotlin文件,后缀为.kt的Activity,如MainActivity.kt,这个使用你使用原来方式的ButterKnife注解式开发是完全无效的。那么问题来了,我们就得解决问题,搞了两个小时,查了很多碎片化的资料,原来配置方面还需要添加东西,修改方式如下:
1、在项目主目录的build.gradle文件当中。。。。嘿嘿嘿,这个文件不需要改
2、再进入app目录当中的build.gradle文件里,添加插件applyplugin:'kotlin-kapt' ,并且在dependencies {}当中添加
kapt "com.jakewharton:butterknife-compiler:$butterknife_version"
看到这里,是否发现了什么呢???当你在普通的Android项目当中使用butterknife时候,用apt,这里用了kapt。。。。好吧,别想太多,可以大概的理解为使用kapt添加进来的butterknife框架才适用于kotlin就行了。。。
3、OK,到此未知,如何在MainActivity.kt里使用呢?方式如下:
在onCreate方法里,添加ButterKnife.bind(this@MainActivity)对于控件绑定,如下
@BindView(R.id.id_tradition_bt)lateinit var mIdTraditionBt: Button@BindView(R.id.id_novel_bt)lateinit var mIdNovelBt: Button然后其他的注解式方式就跟普通的Android注解式是差不多的了。。。
- 一脸懵逼之Kotlin使用ButterKnife无效问题
- Kotlin框架--配置及ButterKnife无效问题
- Android Studio使用ButterKnife 8.0.1无效的问题
- Android Studio使用ButterKnife 8.6.0无效的问题
- Kotlin环境下使用如何butterKnife
- 在Kotlin下使用ButterKnife框架
- ButterKnife使用时onclick点击无效
- ButterKnife的使用问题
- Android之butterknife使用
- 在Kotlin的语言环境下使用ButterKnife框架
- Android Studio 如何在 Kotlin 中使用 ButterKnife
- butterknife 使用遇到的问题
- 使用butterknife引发的问题
- ButterKnife使用报错问题
- Android 之ButterKnife注解使用
- butterknife在eclipse配置讲解(解决ButterKnife.bind初始化无效问题)
- butterknife在eclipse配置讲解(解决ButterKnife.bind初始化无效问题)
- ButterKnife无效 空指针
- 最大流学习hdu3549 && 4920二分图匹配
- windows上用pycharm调试python代码
- 基础数据结构算法_哈夫曼树
- iOS上线版本9.3以下系统,使用很短时间崩溃问题
- mysql 数据库入门
- 一脸懵逼之Kotlin使用ButterKnife无效问题
- studio经典报错 解决
- STEVEY对AMAZON和GOOGLE平台的吐槽
- 关于微信js-sdk拍照功能
- 机器学习基石 4.4 Connection to Real Learning
- iOS开发:Block作为参数使用(常见于各框架)
- 设备模型之kobject,kset及其关系
- 安卓中使用反射以及getDeclaredXXX()和getXXX()方法的区别
- spark ml和mllib库的说明