【问题标题】:OnClick ButterKnife, nothing happensOnClick ButterKnife,没有任何反应
【发布时间】:2017-06-11 07:56:18
【问题描述】:

我正在尝试使用 ButterKnife 来点击。我做了下面的代码,没有任何反应,我在互联网上看过教程,他们做的和我做的一样。

这里是代码

@BindView(R.id.startButton) protected ImageButton mStartButton;

@OnClick(R.id.startButton)
public void startTest(){
    Toast.makeText(this, "testing", Toast.LENGTH_LONG).show();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ButterKnife.bind(MainActivity.this);

}

如果我把方法 startTest();在 OnCreate 内部,应用程序第一次运行时会调用 toast,这表明 ButterKnife 正在工作。但我只需要在单击按钮时发生这种情况。

谢谢

【问题讨论】:

  • 请注意,如果您在onCreate 中调用startTest(),这并不意味着ButterKnife 正在工作。这只是意味着您正在成功调用该方法。
  • 仔细检查一下,您能否也将activity_main.xml 添加到您的问题中?此外,如果您可以尝试添加 (View view) 作为您的 startTest 方法的参数。不应该有任何区别,但只是想排除任何 ButterKnife 怪事。最后,您的应用级build.gradle
  • 我的 build.gradle 中有这些行: compile 'com.jakewharton:butterknife:8.4.0' compile 'com.google.firebase:firebase-auth:9.6.1' compile 'com. google.android.gms:play-services-auth:9.6.1' 编译 'com.android.support:design:24.2.1'
  • @Felipe 请参阅下面的答案。我认为您还缺少 build.gradle 中的 ButterKnife 编译器。

标签: java android buttonclick butterknife


【解决方案1】:

我认为您的 onCreate 方法应该是公开的。试试看。

【讨论】:

    【解决方案2】:

    我能看到的唯一两个原因是

    1. 需要从您的 ImageView 中删除“受保护”

    1. “startButton”实际上并未在 activity_main 中定义

    【讨论】:

      【解决方案3】:

      您提到您的build.gradle 文件中有compile 'com.jakewharton:butterknife:8.4.0'。我认为您可能缺少相应的编译器。将此添加到您的 dependencies 部分:

      annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-23
        • 2014-05-04
        • 2019-01-16
        相关资源
        最近更新 更多