2016-05-12 124 views
3

这是MainActicity:方法“onClick”在butterknife中不起作用?

package com.example.a10648.demo; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.Button; 
import android.widget.Toast; 

import butterknife.BindView; 
import butterknife.ButterKnife; 
import butterknife.OnClick; 

public class MainActivity extends AppCompatActivity { 


@BindView(R.id.button) 
Button button; 

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

@OnClick(R.id.button) 
public void onClick() { 
    Toast.makeText(MainActivity.this,"ok",Toast.LENGTH_SHORT).show(); 
} 
} 

这是XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<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" 
tools:context="com.example.a10648.demo.MainActivity"> 

<Button 
    android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button!" /> 

</RelativeLayout> 

,我有 编译 'com.jakewharton:butterknife:8.0.1'
这是的build.gradle在应用程序

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion "23.0.3" 

defaultConfig { 
    applicationId "com.example.a10648.demo" 
    minSdkVersion 18 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
} 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.3.0' 
compile 'com.jakewharton:butterknife:8.0.1' 
} 

onClick在bufferknife onClick方法不起作用, 当我点击按钮时,没有Toast出现? 我不知道为什么会发生这种情况?

+0

有任何正在添加的错误? – sushildlh

+1

@VishweshJainkuniya没用。这个问题是关于butterknife –

回答

2

看起来你应该包括ButterKnife编译器,以及:

compile 'com.jakewharton:butterknife:8.0.1' 
apt 'com.jakewharton:butterknife-compiler:8.0.1' 
7

fistly,请确保您的项目级的build.gradle如下:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.1.0' 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
    } 
} 

要特别注意这行代码。 不要忽视!

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 

然后,看看你的应用程序/的build.gradle

apply plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' 
android { 
compileSdkVersion 23 
buildToolsVersion "23.0.3" 

defaultConfig { 
    applicationId "com.example.a10648.demo" 
    minSdkVersion 18 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
} 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.3.0' 
compile 'com.jakewharton:butterknife:8.0.1' 
apt 'com.jakewharton:butterknife-compiler:8.0.1' 
} 

要特别注意三行代码。 不要忽视!

apply plugin: 'com.neenbedankt.android-apt' 

compile 'com.jakewharton:butterknife:8.0.1' 
apt 'com.jakewharton:butterknife-compiler:8.0.1' 

然后,一切都好!我太高兴了! 谢谢一叶飘舟 这是他在CSDN的个人页面。

http://blog.csdn.net/jdsjlzx/article/details/51354433

+0

那么说!没有,但这解决了我的问题:) –

0

如果你读的自述,你可以看到 - >

配置您的项目级的build.gradle包括了 'Android的易' 插件:

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 

所以build.gradle:

buildscript { 
     repositories { 
      mavenCentral() 
     } 
     dependencies { 
      classpath 'com.android.tools.build:gradle:2.2.2' 
      classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
     } 
    } 

    allprojects { 
     repositories { 
      jcenter() 
     } 
    } 

    task clean(type: Delete) { 
     delete rootProject.buildDir 
    } 

然后,应用'android-apt'插件在模块级的build.gradle并添加黄油刀依赖关系:

apply plugin: 'android-apt' 

android { 
    ... 
} 

dependencies { 
    compile 'com.jakewharton:butterknife:8.4.0' 
    apt 'com.jakewharton:butterknife-compiler:8.4.0' 
} 

所以你的build.gradle

apply plugin: 'com.android.application' 
apply plugin: 'android-apt' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "com.example.a10648.demo" 
     minSdkVersion 18 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 


dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.3.0' 
    compile 'com.jakewharton:butterknife:8.4.0' 
    apt 'com.jakewharton:butterknife-compiler:8.4.0' 
}