Android 在项目中配置ButterKnife

示例

配置您的项目级别build.gradle以包括android-apt插件:

buildscript {
   repositories { 
        mavenCentral()
   }

   dependencies {
      classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
   }
}

然后,android-apt在模块级别应用插件,build.gradle并添加ButterKnife依赖项:

apply plugin: 'android-apt'

android {
    ...
}

dependencies {
      compile 'com.jakewharton:butterknife:8.5.1'
      annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
}

注意:如果您使用的新Jack编译器具有2.2.0或更高版本,则不需要android-apt插件,而是可以annotationProcessor在声明编译器依赖项时将apt替换为。

为了使用ButterKnife批注,您不应忘记将它们绑定到onCreate()“活动”或onCreateView()“片段”中:

class ExampleActivity extends Activity {

    @Override 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 绑定注解        ButterKnife.bind(this);
        // ...
  }

}

// 要么
class ExampleFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        
    super.onCreateView(inflater, container, savedInstanceState);
        View view = inflater.inflate(getContentView(), container, false);
        // 绑定注解        
        ButterKnife.bind(this, view);
        // ...
        return view;
  }

}

Sonatype的快照存储库中提供了开发版本的快照。


以下是在图书馆项目中使用ButterKnife所必须采取的其他步骤

要在图书馆项目中使用ButterKnife,请将插件添加到您的项目级别build.gradle:

buildscript {
    dependencies {
        classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
    }
}

…然后通过在库级顶部添加以下行来应用于模块build.gradle:

apply plugin: 'com.android.library'
// ...
apply plugin: 'com.jakewharton.butterknife'

现在,请确保在所有ButterKnife批注中使用R2而不是R。

class ExampleActivity extends Activity {

    // 将xml资源绑定到他们的视图 
    @BindView(R2.id.user) EditText username;
    @BindView(R2.id.pass) EditText password;

    // 从可绘制,字符串,尺寸,颜色绑定资源
    @BindString(R.string.choose) String choose;
    @BindDrawable(R.drawable.send) Drawable send;
    @BindColor(R.color.cyan) int cyan;
    @BindDimen(R.dimen.margin) Float generalMargin;

    @OnClick(R.id.submit)
    public void submit(View view) {
    // TODO将数据提交到服务器...
    }

    @Override 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);        
        ButterKnife.bind(this);
        // 待办事项继续
  }

}