Android ButterKnife
Я установил ButterKnife
мой build.gradle
выглядит так:
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'
}
Моя учетная запись выглядит так:
package com.example.egen.forum;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
Toast.makeText(getApplicationContext(), "Your toast message.",
Toast.LENGTH_SHORT).show();
}
@OnClick(R.id.btnLogin) public void test() {
Toast.makeText(getApplicationContext(), "Your toast message.",
Toast.LENGTH_SHORT).show();
}
}
Второй тост не появляется. Что я здесь не так делаю?
3 ответа
Вы не включили процессор аннотаций для генерации кода ButterKnife. Сделайте это, как описано на странице GitHub:
dependencies {
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
}
И примените плагин:
apply plugin: 'com.jakewharton.butterknife'
В противном случае ваш код выглядит нормально.
Объяснение: Библиотека ButterKnife использует процессор аннотаций для генерации кода, который предоставляет ссылки на представления и выполняет аннотированные методы ButterKnife. Если вы перестроите свой проект, и AndroidStudio покажет, что @OnClick
Аннотированный метод не используется, тогда что-то не так. Если процессор аннотаций предоставлен и работает правильно, он должен отображаться как использованный и приводить к сгенерированному методу.
Добавьте эту строку:
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
а также в вашем build.gradle.
Смотрите здесь для получения дополнительной информации
Что ж, Butterknife - вчера, используйте вместо этого привязку данных: https://developer.android.com/topic/libraries/data-binding/index.html. Это почти тот же инструмент из коробки