android - studio - ButterKnife 8.0.1 no funciona
butterknife android (10)
Añadir
annotationProcessor ''com.jakewharton:butterknife-compiler:8.6.0''
En su archivo gradle funcionó para mí
Estoy usando
butterknife 8.0.1
, pero
nullpointerexception
una
nullpointerexception
.
Esta línea está en mi archivo build.grade:
compile ''com.jakewharton:butterknife:8.0.1''
Esta es mi
Main Class:
(escribí el incluye correctamente)
import butterknife.BindView;
import butterknife.ButterKnife;
public class MainActivity extends BaseActivity {
@BindView(R.id.MainScreenTextView) TextView mainText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
**mainText.setText("Butter knife is working fine");**
}
y esto es
MainActivity.xml
:
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/MainScreenTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is the Main Screen"
android:textColor="#000000"
android:background="#666666"
android:padding="5dp"
android:textSize="20dp"/>
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email" />
Acabo de enfrentar este problema, después de actualizar mi proyecto a Gradle versión
3.0.1
.
Pude solucionarlo simplemente incluyendo en el archivo de la
app
Gradle la línea:
annotationProcessor ''com.jakewharton:butterknife-compiler:8.8.1''
El resultado final fue:
dependencies {
compile fileTree(include: [''*.jar''], dir: ''libs'')
androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
...
compile ''com.jakewharton:butterknife:8.8.1''
annotationProcessor ''com.jakewharton:butterknife-compiler:8.8.1''
}
Espero que esto ayude a alguien, aunque esta pregunta sea antigua.
Configure Butterknife en el archivo build.gradle como este,
compile("com.jakewharton:butterknife:8.5.1")
annotationProcessor "com.jakewharton:butterknife-compiler:8.5.1"
Esto funciona para mi.
De JakeWharton
Sí, ese complemento ya no es necesario. Ya está utilizando AnnotationProcessor para el artefacto ''compilador de navajas de mantequilla'' que está integrado en el complemento Android Gradle.
Entonces la solución es eliminar apt classpath ''com.neenbedankt.gradle.plugins: android-apt: 1.8''
Según
el archivo Léame
, debe incluir el
butterknife-compiler
para que el código generado se produzca automáticamente:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ''com.neenbedankt.gradle.plugins:android-apt:1.8''
}
}
apply plugin: ''com.neenbedankt.android-apt''
dependencies {
compile ''com.jakewharton:butterknife:8.0.1''
apt ''com.jakewharton:butterknife-compiler:8.0.1''
}
Sin esto, no hay código generado para cargar y, por lo tanto, ninguno de los campos se configura.
Puede verificar que ButterKnife está funcionando llamando a
ButterKnife.setDebug(true)
y buscando en Logcat.
Si usa kotlin:
asegúrese de usar esta dependencia en la aplicación del módulo:
dependencies {
implementation ''com.jakewharton:butterknife:10.0.0''
kapt ''com.jakewharton:butterknife-compiler:10.0.0''
}
También tuve este problema, solo porque agregué butterknife de la administración de dependencias de Android Studio y no copiando y pegando líneas gradle del sitio web de Butterknife.
Así que tuve que agregar
compile ''com.jakewharton:butterknife:8.5.1'' annotationProcessor ''com.jakewharton:butterknife-compiler:8.5.1''
lugar de simplemente
compile ''com.jakewharton:butterknife:8.5.1''
Usé esta biblioteca en Fragment y tiene NPE. Mi código fue:
ButterKnife.bind(view);
Pero estuvo mal.
La biblioteca necesita conocer dos objetos:
1) Objetivo: con anotaciones @BindView
2) Fuente - con vistas
Será correcto escribir:
ButterKnife.bind(this, view);
Cuando esto, su fragmento y vista, vea este fragmento.
para mí el problema era que estaba usando
annotationProcessor ''com.jakewharton:butterknife-compiler:8.7.0''
en vez de
apt ''com.jakewharton:butterknife-compiler:8.7.0
App Level(build.gradle)
apply plugin: ''android-apt''
dependencies {
compile fileTree(include: [''*.jar''], dir: ''libs'')
compile ''com.android.support:appcompat-v7:24.2.1''
testCompile ''junit:junit:4.12''
compile ''com.jakewharton:butterknife:8.4.0''
apt ''com.jakewharton:butterknife-compiler:8.4.0''
}
Project Level(build.gradle)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath ''com.neenbedankt.gradle.plugins:android-apt:1.8''
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}