@OnClick
无法实施ButterKnife库
当我点击Button
时,没有任何事情发生。
这是我的完整代码:
public class MainActivity extends ActionBarActivity {
@InjectView(R.id.edit_user)
EditText username;
@InjectView(R.id.edit_pass)
EditText password;
@OnClick(R.id.btn)
void submit() {
// TODO call server...
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
// TODO Use "injected" views...
}
}
这是我的xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText
android:id="@+id/edit_user"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="user" />
<EditText
android:id="@+id/edit_pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="user" />
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
由于
答案 0 :(得分:11)
对于在Android Studio中遇到此问题的任何人,请确保在相应的构建文件中包含必要的依赖项和apt插件(请查看Butterknife自述文件)。我匆匆通过了文档,只包含了编译依赖项,导致绑定无声地失败。
答案 1 :(得分:10)
正如Butterknife文档中所提到的,如果您正在使用Eclipse,那么在处理注释之前,您需要configure IDE
答案 2 :(得分:3)
在您的活动中尝试添加..
ButterKnife.inject(this);
检查此代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
}
@OnClick(R.id.buttonAlert)
public void alertClicked(View v){
new AlertDialog.Builder(v.getContext())
.setMessage(getFormattedMessge())
.setNeutralButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.show();
}
答案 3 :(得分:3)
仔细检查项目中的所有依赖项。这是自述文件的下载说明。 配置项目级build.gradle以包含&#39; android-apt&#39;插件:
($result | % { [Convert]::ToString($_, 2).PadLeft(8,'0')})
然后,应用&#39; android-apt&#39;你的模块级build.gradle中的插件并添加Butter Knife依赖项:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
注意:如果您使用版本为2.2.0或更高版本的新Jack编译器,则不需要&#39; android-apt&#39;在声明编译器依赖时,插件可以替换apt和annotationProcessor。
答案 4 :(得分:3)
在活动的onCreate()中使用ButterKnife.bind(this);
。或onCreateView for Fragment。
@OnClick(R.id.button_stop_sticky)
public void onStopClicked(View v) {
Toast.makeText(this, "onStop Clicked", Toast.LENGTH_LONG).show();
}
显然,app模块&gt; gradle添加依赖
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
答案 5 :(得分:0)
使用Butter Knife你可以像这样绑定你的视图......
class ExampleActivity extends Activity {
@Bind(R.id.title)
TextView title;
@Bind(R.id.subtitle)
TextView subtitle;
@Bind(R.id.footer)
TextView footer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.bind(this);
// TODO Use fields...
}
}
有关详情,您可以看到此链接http://jakewharton.github.io/butterknife/