ButterKnife的简单使用

首先导入依赖:

导入ButterKnife依赖的知道的有两种方法

1、在app目录下的build.gradle文件的dependencies中加入implementation'com.jakewharton:butterknife:butterknife版本’。我加入的是8.8.1。如:implementation'com.jakewharton:butterknife:8.8.1'然后点击界面右上角的“Sync Now”,点击后就会导入相应的包

2、点击界面左上角的File->Project Structure->Dependencies->Librarydependency或者鼠标点下app再点右键->OpenModule Settings->Dependencies->Library dependency然后在输入框中输入ButterKnife,点击右边的搜索图标.选择com.jakewharton:butterknife:版本号,不要选错了,选错的话接下来的步奏会报错的。然后也会在app目录下的build.gradle文件的dependencies中加入implementation'com.jakewharton:butterknife:butterknife版本’

ButterKnife的注册与绑定:

在Activity 类中绑定:ButterKnife.bind(this);必须在setContentView();之后绑定;且父类bind绑定后,子类不需要再bind。

例:

Activity:

publicclass MainActivity extends AppCompatActivity {
    @BindView(R.id.text)
    TextView textView;
    @Override
    protected void onCreate(BundlesavedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        textView.setText("qwer");
    }
}

activity_main.xml

<?xmlversion="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="HelloWorld!" />
</android.support.constraint.ConstraintLayout>

配置好运行。运行的时候会出错,会报textView 空指针。别急,接下来在app目录下的build.gradle文件的dependencies中加入annotationProcessor 'com.jakewharton:butterknife-compiler:版本号’。我加入的是8.8.1。如:annotationProcessor'com.jakewharton:butterknife-compiler:8.8.1'然后点击界面右上角的“SyncNow”,点击后就会导入相应的包。这时候在运行就不会报空指针问题。

以上配置用一个不完美的地方就是每一个activity想使用butterknife的时候都需要注册与绑定,很繁琐。我们可以创建一个BaseActivity,在这里注册与绑定butterknife(BaseActivity不需要注册到AndroidManifest.xml中),然后让要使用butterknife的activity继承BaseActivity。

BaseActivity:

publicabstract class BaseActivity extends Activity {
    @Override
    protected void onCreate(@Nullable BundlesavedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayout());
        ButterKnife.bind(this);
        initView();
    }
    public abstract int getLayout();
    public abstract void initView();
}

BaseActivity是个抽象类,里面定义两个抽象方法getLayout和initView(当然,长两个方法名字可以随意定义。)。getLayout返回的是子activity所对应的xml在R中的id。因为BaseActivity的setContentView()要初始化这个Xml。initView()方法的作用是当子activity创建的时候自动调用的方法。

例:

publicclass MainActivity extends BaseActivity {
       @BindView(R.id.move_image)
       TextViewmoveImageView;
       @Override
       publicint getLayout() {
           returnR.layout.activity_main;
       }
        @Override
        public void initView() {
             moveImageView.setOnClickListener(new View.OnClickListener(){
                        @Override
                   public void onClick(Viewv) {
                     RewriteViewActivity.startAction(MainActivity.this);
                   }
        });
   }

以上我理解的butterknife的简单实用过程。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值