私は Butterknife をAndroid studioプロジェクトに実装しようとしています。
しかし、そうすると、@InjectView
"シンボルInjectViewを解決できません"でエラーが発生します。
バターナイフをうまく実装していませんか?
アクティビティコード:
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);
}
}
レイアウト:
<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ファイル:
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'
}
あなたのコードは良いと思う、
クリックしてグラドルを同期してみてください
File
-_invalidate Caches
_に移動して、Androidスタジオを再起動してください。
また、ButterKnife.inject(this);
にonCreate()
を置くことを忘れないでください
ButterKnifeライブラリの最新バージョンでは、@InjectView()
注釈が使用されなくなったことに注意してください。
代わりに、@Bind(R.id.tvHelloWorld)
とButterKnife.bind(this);
が使用されます。
したがって、ButterKnifeはバージョン8.5.1
で更新されました
それを使用するには、
プロジェクトレベルbuild.gradle
内に以下の行を追加します。
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
アプリレベルbuild.gradle
内に以下の行を追加します。
// Field and method binding for Android views
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
次のようにbutterknifeプラグインを適用します。
apply plugin: 'com.jakewharton.butterknife'
以前のバージョンのButterKnifeに対する構文のわずかな変更は、ButterKnfeアノテーションの使用中にR
の代わりにR2
を使用する必要があることです。
具体的に:
書く代わりに
@BindView(R.id.textView)
TextView mTextView;
私たちは書いています
@BindView(R2.id.textView)
TextView mTextView;
そして、単にプロジェクトをビルドします。
TextView tv1宣言をクラス内に移動します。 ButterKnife.inject(this);メソッドも呼び出します。
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);
}
}
ButterKnifeライブラリ(8.5.1)の最新バージョンでは、@InjectView()
注釈は使用されません。
@InjectView(Component)の代わりに@BindView(Component)
を使用でき、Butterknife.inject(this)
を使用する代わりにButterKnife.bind(this)
を使用できます
私はすべての答えを試しましたが、ライブラリで何かを変更したため、何もうまくいきません。 @InjectViewの代わりに@Bindを試してください。それはうまくいきます