Android 黄油刀

Android ButterKnife

我已经安装了 ButterKnife 我的 build.gradle 看起来像这样:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.jakewharton:butterknife:8.4.0'
}

我的 loginActivity 看起来像这样:

package com.example.egen.forum;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class LoginActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ButterKnife.bind(this);
        Toast.makeText(getApplicationContext(), "Your toast message.",
                Toast.LENGTH_SHORT).show();
    }

    @OnClick(R.id.btnLogin) public void test() {
        Toast.makeText(getApplicationContext(), "Your toast message.",
                Toast.LENGTH_SHORT).show();
    }
}

第二次敬酒没有出现。我在这里做错了什么?

添加这一行:

annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'

还有你的 build.gradle.

有关详细信息,请参阅 here

您还没有包含用于 ButterKnife 代码生成的注释处理器。按照 GitHub page:

中的描述进行操作
dependencies {
  compile 'com.jakewharton:butterknife:8.4.0'
  annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
}

并应用插件:

apply plugin: 'com.jakewharton.butterknife'

否则,您的代码看起来没问题。

说明:ButterKnife 库使用注解处理器来生成提供对视图的引用并执行 ButterKnife 注解方法的代码。如果您重建项目,而 AndroidStudio 显示未使用 @OnClick 注释方法,则说明有问题。如果提供了注解处理器并且工作正常,它应该显示为已使用并导致生成的方法。

好吧,Butterknife 是昨天的事情,改用数据绑定:https://developer.android.com/topic/libraries/data-binding/index.html。 这几乎是开箱即用的相同工具