2016-05-12 3 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: нож для масла: 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 не работает, когда я нажимал кнопку, нет тоста? Я не знаю, почему так происходит?

+0

есть ли пришедшая ошибка? – sushildlh

+1

@ VishweshJainkuniya это бесполезно. Этот вопрос касается butterknife –

ответ

2

Похоже, вы должны включать в себя компилятор, а нож для масла:

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' 

Тогда все в порядке! Я так счастлив! Thank you to 一叶 飘 舟 Это его личная страница в CSDN.

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

+0

Хорошо сказано! Нет, но это решило мою проблему :) –

0

если читать ридми, вы можете увидеть ->

Настройка уровня проекта build.gradle включить 'андроид-APT' плагин:

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