Fragment中使用ButterKnife初始化view失败
来源:互联网 发布:centos7 开启3306端口 编辑:程序博客网 时间:2024/06/08 08:47
之前文章里写的 Android基本界面模型 里提过,在Fragment中使用ButterKnife初始化view会提示空指针异常的问题,经过哥们们一起分析,是我的一个缺乏经验的低级操作失误。
代码中调用正常
在代码中按照作者的调用方法初始化绑定view的操作是正常的,例如:
- In Activity
class ExampleActivity extends Activity { @BindView(R.id.title) TextView title; @BindView(R.id.subtitle) TextView subtitle; @BindView(R.id.footer) TextView footer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.bind(this); // TODO Use fields... }}
- RESOURCE BINDING
class ExampleActivity extends Activity { @BindString(R.string.title) String title; @BindDrawable(R.drawable.graphic) Drawable graphic; @BindColor(R.color.red) int red; // int or ColorStateList field @BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field // ...}
- NON-ACTIVITY BINDING,like in Fragment
public class FancyFragment extends Fragment { @BindView(R.id.button1) Button button1; @BindView(R.id.button2) Button button2; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fancy_fragment, container, false); ButterKnife.bind(this, view); // TODO Use fields... return view; }}
Gradle 依赖库和插件配置
不再列举,详情见butterknife官网
重点在这里!
在 Gradle 配置中添加 ButterKnife 的依赖库
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
或者在 Project Structure
-> Dependency
中添加 Library dependency
,输入
om.jakewharton:butterknife:8.4.0
,需要选择两个:
com.jakewharton:butterknife:8.4.0
com.jakewharton:butterknife-compiler:8.4.0
按照作者的介绍,是在 Gradle 的配置文件中增加如下两行:
compile 'com.jakewharton:butterknife:8.4.0'apt 'com.jakewharton:butterknife-compiler:8.4.0'
和通过IDE添加的结果不太一致,相差在 compile
&apt
手动查了下,最后确定如下流程:
- In your project-level
build.gradle
file:
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' }}
- In your module-level
build.gradle
file:
apply plugin: 'android-apt'android { ...}dependencies { compile 'com.jakewharton:butterknife:8.4.0' apt 'com.jakewharton:butterknife-compiler:8.4.0'}
- modify module-level
build.gradle
file
apply plugin: 'com.android.application'apply plugin: 'android-apt'
最后整体sync一下就可以了
附记
compile与apt区别:是compile会编译到最后的APK或library,apt不会;
- apt允许配置只在编译时作为注解处理器的依赖,而不添加到最后的APK或library
- 设置源路径,使注解处理器生成的代码能被Android Studio正确的引用
参考android-apt 、官网
牢记!!!
完全对照官网说明写!省的浪费时间!
2016-11-05附记:版本更新后,直接按照作者github的readme文件内提示进行操作即可
阅读全文
0 0
- Fragment中使用ButterKnife初始化view失败
- ButterKnife在activity和Fragment中使用的区别
- View Composer 代理初始化失败
- android中Butterknife使用
- ButterKnife使用之Activity与Fragment
- butterknife初始化
- Android中ViewPager + Fragment使用ButterKnife注解时出现空指针NullPoint的情况
- Android中ViewPager + Fragment使用ButterKnife注解时出现空指针NullPoint的情况
- 在fragment中使用ButterKnife, 加Okhttp等异步网络库时的空指针异常
- Android 中注解view (仿butterknife)
- View注入框架:Butterknife简单使用
- Android Butterknife view注入框架使用
- ButterKnife中如何绑定头View和脚View
- AndroidStudio中使用ButterKnife注解
- studio中如何使用butterknife
- AndroidStudio中使用ButterKnife教程!
- AndroidStudio中如何使用ButterKnife
- 在 library 中使用 ButterKnife
- sprintf()、fprintf()的使用方法
- greenDao使用方法二
- 如何实现守护进程?
- java多线程学习之状态停止法
- Retrofit 2.0 个注解详解
- Fragment中使用ButterKnife初始化view失败
- MIME邮件的multipart类型与text类型的区别
- 关于C++中虚函数表存放位置的思考
- 修改Gradle使用国内源
- 简单说说python import与from...import....(python模块)
- Java8学习笔记 — 新日期时间API
- RevolC FaeLoN UVA
- java多线程学习之停止休眠中的线程问题
- 自定义jsp标签示例