gpt4 book ai didi

butterknife - butterknife 不会注入(inject)

转载 作者:行者123 更新时间:2023-12-04 03:04:12 29 4
gpt4 key购买 nike

我正在尝试使用 Butter Knife这些天在Android Studio,但它让我遇到了一些奇怪的问题。我曾经在eclipse上尝试过 butterknife ,效果很好。我不知道我是否在 Android Studio 中配置了错误。

我遵循了 Jake Wharton 的 website 的指示。 ,但它仍然无法正常工作。一开始可以编译安装,但是在Butterknife.inject(this)之后, View 仍然为空,并引发空指针错误。然后我用谷歌搜索了如何在 Android Studio 上配置 Butterknife,然后跟着 this issue在stackoverflow,它无法通过编译。

然后我恢复到我的第一个配置版本,它也开始编译失败。这是消息:
Error:(14, 12): @InjectView-annotated class incorrectly in Android framework package. (android.rocky.butterknife_test.MyActivity)

Error:Execution failed for task ':app:compileDebugJava'.
Compilation failed; see the compiler error output for details.

这是我的app/build.gradle的配置:

apply plugin: 'com.android.application'

android {
compileSdkVersion 20
buildToolsVersion "20.0.0"

defaultConfig {
applicationId "android.rocky.butterknife_test"
minSdkVersion 19
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
runProguard false
}
}
lintOptions {
disable 'InvalidPackage'
}
packagingOptions {
exclude 'META-INF/services/javax.annotation.processing.Processor'
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.jakewharton:butterknife:5.1.2'
}

这是我的 build.gradle的配置在根:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
mavenCentral()
}
}

这是我的 Java 代码:
public class MyActivity extends Activity {
@InjectView(R.id.greeting)
TextView greetingTextView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
ButterKnife.inject(this);
greetingTextView.setText("butter knife!");
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

顺便说一句,我的 android studio 版本是 0.8.2。如果您认为我粘贴的片段都很好,请告诉我粘贴其他片段。非常感谢!

最佳答案

异常(exception)说明了一切:

@InjectView-annotated class incorrectly in Android framework package. (android.rocky.butterknife_test.MyActivity)



您的类(class)在 Android 框架包中, android.* .应用程序不应使用 android.*java.*他们的代码包。 ButterKnife 会急切地拒绝这些包裹。

关于butterknife - butterknife 不会注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152401/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com