问题
I am trying to implement Butterknife into my android studio project.
However when I do so I get an error on @InjectView
"cannot resolve symbol InjectView".
Have I not implemented Butterknife sucsessfully?
Activity code:
package com.example.rodf.testapp;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
@InjectView(R.id.tvHelloWorld) TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
layout:
<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" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:id="@+id/tvHelloWorld"
android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
gradle file:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.rodf.testapp"
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
//adding the butter knife library
compile 'com.jakewharton:butterknife:6.0.0'
}
回答1:
I think your code is good,
Try to sync your gradle by click
Try to go
File
--invalidate Caches
and restart your Android studio.
Also, don't forget put ButterKnife.inject(this);
in onCreate()
回答2:
Note that in the latest versions of the ButterKnife library, the @InjectView()
annotation is no longer used.
In stead @Bind(R.id.tvHelloWorld)
and ButterKnife.bind(this);
are used.
Reference: http://jakewharton.github.io/butterknife/
回答3:
So ButterKnife just got updated with version 8.5.1
To use that,
Add below line inside project-level build.gradle
:
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
Add below lines inside app-level build.gradle
:
// Field and method binding for Android views
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
Apply butterknife plugin as below:
apply plugin: 'com.jakewharton.butterknife'
A little change in syntax to previous ButterKnife version is that, now you have to use R2
instead of R
while using ButterKnfe annotations.
To be specific:
Instead of writing
@BindView(R.id.textView)
TextView mTextView;
We will be writing
@BindView(R2.id.textView)
TextView mTextView;
and then simply build the project.
回答4:
Set up manual configuration for ButterKnife from this link
File -> Other Settings -> Default Settings
Compiler -> Annotation Processors -> Check Enable annotation processing
回答5:
Move the TextView tv1 declaration inside your class. Also call the ButterKnife.inject(this); method.
import butterknife.ButterKnife;
import butterknife.InjectView;
public class MainActivity extends ActionBarActivity {
@InjectView(R.id.tvHelloWorld) TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
}
}
回答6:
I tried all the answer's but nothing is working for me because in the library they changed something. Insteded of @InjectView try @Bind. It will work fine
回答7:
In the latest versions of the ButterKnife library(8.5.1), the @InjectView()
annotation is not used.
You can use @BindView(Component)
instead of @InjectView(Component) and instead of using Butterknife.inject(this)
use ButterKnife.bind(this)
来源:https://stackoverflow.com/questions/28138859/android-studio-integrating-butterknife