在專案中配置 ButterKnife
配置專案級 build.gradle
以包含 android-apt
外掛:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
}
}
然後,在模組級 build.gradle
中應用 android-apt
外掛並新增 ButterKnife 依賴項:
apply plugin: 'android-apt'
android {
...
}
dependencies {
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
}
注意:如果你使用版本為 2.2.0 或更高版本的新 Jack 編譯器,則不需要 android-apt
外掛,而是在宣告編譯器依賴項時可以用 annotationProcessor
替換 apt。
為了使用 ButterKnife 註釋,你不應該忘記在你的活動或你的片段中分享它們:
class ExampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Binding annotations
ButterKnife.bind(this);
// ...
}
}
// Or
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);
// Binding annotations
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 {
// Bind xml resource to their View
@BindView(R2.id.user) EditText username;
@BindView(R2.id.pass) EditText password;
// Binding resources from drawable,strings,dimens,colors
@BindString(R.string.choose) String choose;
@BindDrawable(R.drawable.send) Drawable send;
@BindColor(R.color.cyan) int cyan;
@BindDimen(R.dimen.margin) Float generalMargin;
// Listeners
@OnClick(R.id.submit)
public void submit(View view) {
// TODO submit data to server...
}
// bind with butterknife in onCreate
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
// TODO continue
}
}