Android @OnClick在ButterKnife库的实现中不起作用

Android @OnClick在ButterKnife库的实现中不起作用,android,butterknife,Android,Butterknife,@OnClick在ButterKnife库的实现中不起作用 当我点击按钮时,什么都没有发生 这是我的完整代码: public class MainActivity extends ActionBarActivity { @InjectView(R.id.edit_user) EditText username; @InjectView(R.id.edit_pass) EditText password; @OnClick(R.id.btn) vo

@OnClick
在ButterKnife库的实现中不起作用

当我点击
按钮时,什么都没有发生

这是我的完整代码:

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" />


感谢您在活动中尝试添加

 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,则需要先打开IDE,然后才能使用Butterknife处理注释。您还可以像这样绑定视图

 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...
    }
}

有关更多详细信息,您可以查看此链接

对于在Android Studio中遇到此问题的任何人,请确保您在各自的构建文件中包含了必要的依赖项和apt插件(请查看Butterknife自述)。我匆匆浏览了文档,只包含了编译依赖项,这导致绑定以静默方式失败。

仔细检查项目中的所有依赖项。以下是自述文件的下载说明。 配置您的项目级build.gradle以包含“android apt”插件:

buildscript {
   repositories {
      mavenCentral()
   }
   dependencies {
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
   }
}
然后,在模块级build.gradle中应用“android apt”插件,并添加黄油刀依赖项:

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”插件,可以在声明编译器依赖项时用annotationProcessor替换apt。

使用
ButterKnife.bind(此)。或片段的onCreateView

@OnClick(R.id.button_stop_sticky)
    public void onStopClicked(View v) {

        Toast.makeText(this, "onStop Clicked", Toast.LENGTH_LONG).show();

    }
显然,app module>gradle添加了依赖项

compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

您是否调用了
ButterKnife.inject(这个,视图)
黄油刀。注入(此)?ButterKnife.注入(此)@shayanpourvatan必须更改ButterKnife.inject(this)到ButterKnife.inject(this,view)?您可以从
活动调用此功能,或者从
片段调用此功能,如果您从活动调用
此功能就足够了,但是如果您在片段或适配器中,您必须将
视图传递给我使用的活动,是否需要启用批注?.inject已更改。在最新库中绑定您可以查看此链接以了解更多详细信息: