@OnClick 在 ButterKnife 库的实现中不起作用
@OnClick is not working in implementation of ButterKnife Library
@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" />
谢谢
在你的 activity 中尝试添加..
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();
}
如 Butterknife 文档中所述,如果您使用的是 Eclipse,则需要 configure IDE 才能处理注释
使用 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...
}
}
更多细节你可以看这个linkhttp://jakewharton.github.io/butterknife/
对于 运行 在 Android Studio 中遇到此问题的任何人,请确保在各自的构建文件中包含必要的依赖项和 apt 插件(查看 Butterknife 自述文件)。我匆匆浏览了文档,只包含了编译依赖,导致绑定失败。
仔细检查项目中的所有依赖项。这是自述文件的下载说明。
配置项目级别 build.gradle 以包含 'android-apt' 插件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
然后,在模块级别应用 'android-apt' 插件 build.gradle 并添加 Butter Knife 依赖项:
apply plugin: 'android-apt'
android {
...
}
dependencies {
compile 'com.jakewharton:butterknife:8.2.1'
apt 'com.jakewharton:butterknife-compiler:8.2.1'
}
注意:如果您使用的是 2.2.0 或更高版本的新 Jack 编译器,则不需要 'android-apt' 插件,而是可以在声明编译器依赖项时将 apt 替换为 annotationProcessor。
在 Activity 的 onCreate() 中使用 ButterKnife.bind(this);
。或片段的 onCreateView。
@OnClick(R.id.button_stop_sticky)
public void onStopClicked(View v) {
Toast.makeText(this, "onStop Clicked", Toast.LENGTH_LONG).show();
}
显然,应用程序模块 > gradle 添加依赖项
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
@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" />
谢谢
在你的 activity 中尝试添加..
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();
}
如 Butterknife 文档中所述,如果您使用的是 Eclipse,则需要 configure IDE 才能处理注释
使用 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...
}
}
更多细节你可以看这个linkhttp://jakewharton.github.io/butterknife/
对于 运行 在 Android Studio 中遇到此问题的任何人,请确保在各自的构建文件中包含必要的依赖项和 apt 插件(查看 Butterknife 自述文件)。我匆匆浏览了文档,只包含了编译依赖,导致绑定失败。
仔细检查项目中的所有依赖项。这是自述文件的下载说明。 配置项目级别 build.gradle 以包含 'android-apt' 插件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
然后,在模块级别应用 'android-apt' 插件 build.gradle 并添加 Butter Knife 依赖项:
apply plugin: 'android-apt'
android {
...
}
dependencies {
compile 'com.jakewharton:butterknife:8.2.1'
apt 'com.jakewharton:butterknife-compiler:8.2.1'
}
注意:如果您使用的是 2.2.0 或更高版本的新 Jack 编译器,则不需要 'android-apt' 插件,而是可以在声明编译器依赖项时将 apt 替换为 annotationProcessor。
在 Activity 的 onCreate() 中使用 ButterKnife.bind(this);
。或片段的 onCreateView。
@OnClick(R.id.button_stop_sticky)
public void onStopClicked(View v) {
Toast.makeText(this, "onStop Clicked", Toast.LENGTH_LONG).show();
}
显然,应用程序模块 > gradle 添加依赖项
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'