我正在使用butterknife绑定我的视图,因此当活动开始时,抛出以下异常
java.lang.RuntimeException:无法启动活动ComponentInfo {.. package name ...}:java.lang.IllegalStateException:必需的视图' l' ID为2131558524,用于字段&tabaetem'和方法'检查'没找到。如果此视图是可选的,则添加' @ Nullable' (字段)或' @ Optional' (方法)注释。
注意:我在setContentView(view)之后调用了Butterknife.bind(this),这个视图不是可选的
我的代码
public class HandlingActivity extends AppCompatActivity {
@BindView(R.id.container_view)FrameLayout container;
@BindView(R.id.l)TabItem tabItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_handling);
ButterKnife.bind(this);
}
@OnClick(R.id.l)void check(){
StoriesFragment storiesFragment = new StoriesFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.container_view,storiesFragment).commit();
}
}
答案 0 :(得分:6)
如果您的TabItem没有准备就绪,那么在声明变量及其各自的onclick时尝试使用它。
从here
获取参考资料 @Nullable
@BindView(R.id.l)TabItem tabItem;
@Optional
@OnClick(R.id.l)
void check(){
//method logic...
}
答案 1 :(得分:0)
检查您是否已加入build.gradle
(模块:应用)
dependencies {
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
provided 'javax.annotation:jsr250-api:1.0'
compile 'com.jakewharton:butterknife:8.5.1'
}
检查您的ID是否存在
尝试添加@OnClick(R.id.l)void check(View v){ ... }
答案 2 :(得分:0)
在我的情况下,这个错误是因为我对不同的版本使用了两种布局:
activity_login.xml
activity_login.xml(v21)
我在 activity_login.xml 中添加了 progressBar ,但是......
我忘记添加到 activity_login.xml(v21)。
答案 3 :(得分:0)
在我的Activity类中将注释@Optional添加到@Onclick之后,它对我有用:
@Optional
@OnClick({R.id.your_id_1, R.id.your_id_2})
public void onClick(View v) {
switch (v.getId()) {
case R.id.your_id_1:
break;
case R.id.your_id_2:
break;
}
}
导入依赖项并绑定您的Activity:
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Optional;
public class YourActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
ButterKnife.bind(this);
}
}
要在库中使用Butter Knife,请将插件添加到您的buildscript中:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
}
}
以及您的app / build.gradle
android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
defaultConfig {
applicationId 'your_app_id'
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
}
}
dependencies {
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
干杯;]
答案 4 :(得分:0)
我有类似的错误,这是由于错误的布局文件在视图中被夸大了,而该视图中没有相关字段被错误报告了。