ButterKnife框架的使用

来源:互联网 发布:数据分析师好考吗 编辑:程序博客网 时间:2024/05/17 23:45
一、ButterKnife框架集成步骤:1、AS添加依赖及配置信息:buildscript {repositories {jcenter()}dependencies {//butterknife依赖注入框架配置classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'}}//////////////////////////////////////////////////////////////////////////////////apply plugin: 'android-apt'//butterknife注入依赖设置dependencies {    ///ButterKnife依赖compile 'com.jakewharton:butterknife:8.8.1'compile 'com.jakewharton:butterknife-compiler:8.8.1'}2、使用步骤:在Activity中:public class DemoActivity extends FragmentActivity {@BindView(R.id.textview_test)TextView textview_test;private Unbinder mUnbinder;//ButterKnife 的绑定设置对象。@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_demo); mUnbinder = ButterKnife.bind(this);//ButterKnife 的绑定设置。textview_test.setText("... ...");......}@Overrideprotected void onDestroy() {mUnbinder.unbind();//ButterKnife 的解除绑定设置。}//点击事件的处理@OnClick({R.id.textview_test})public void onViewClicked(View view) {switch (view.getId()) {case R.id.textview_test:MLog.e("返回");break;}}}在Fragment中:public class DemoFragment extends Fragment{private Unbinder unbinder;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragmnet_demo, null);//注意这里的this不是getActivity()unbinder = ButterKnife.bind(this, view);return view;}@Overridepublic void onDestroyView() {super.onDestroyView();unbinder.unbind();//解除ButterKnife绑定。}}在Adapter中:public class DemoAdapter extends BaseAdapter {    @Override     public View getView(int position, View contentView, ViewGroup parent) {  ViewHolder viewHolder;  if(contentView == null){contentView = LayoutInflater.from(mContext).inflate(R.layout.item_layout,null);viewHolder = new ViewHolder(contentView);}else{viewHolder = (ViewHolder)contentView.getTag();}viewHolder.titleItemLayoutTitle.setText("demo");... ...return view;    }    static class ViewHolder {  @BindView(R.id.textview_item_layout_title) TextView titleItemLayoutTitle;    public ViewHolder(View view) {    ButterKnife.bind(this, view);  }    }  }  3、使用ButterKnife遇到的坑:空指针异常刚刚开始用ButterKnife不注意的话,一般都会遇到空指针异常的问题,其原因就是初始化布局文件和初始化绑定ButterKnife的顺序颠倒了,或者在绑定ButterKnife之前使用控件。就像之前用findViewById()方法放到了setContentView(R.layout.activity_base)之前是一样的道理,这样肯定是找不到控件的,所以报空指针异常。;一般开发中Activity都会做分层处理,会提取一个BaseActivity。在BaseActivity设置ButterKnife的绑定,一定要在子Activity布局加载之后进行绑定。不然就会出现控制针异常。

原创粉丝点击