android - java.lang.IllegalStateException butterknife

标签 android android-activity butterknife

我面临 java.lang.IllegalStateException Required view 'splash_text' 但我已将其包含在 xml 中。

我正在使用 Butterknife 来绑定(bind) View 。

 compile 'com.jakewharton:butterknife:7.0.1'

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_orange_light">

<com.CustomTextView
    android:id="@+id/splash_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
   />

</RelativeLayout>

Activity :

@Bind(R.id.splash_text)
CustomTextView mSplashTv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_splash);
    ButterKnife.bind(this);

    mSplashTv.setText("Splash");

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            finishSplash();
        }
    },3000);
}

应用程序在 mSplashTv.setText("Splash"); 行崩溃

日志:

  Caused by: java.lang.IllegalStateException: Required view 'splash_text' with ID 2131492944 for field 'mSplashTv' was not found. If this view is optional add '@Nullable' annotation.
  at butterknife.ButterKnife$Finder.findRequiredView(ButterKnife.java:140)
  at com.sonymix.activities.SplashActivity$$ViewBinder.bind(SplashActivity$$ViewBinder.java:12)
  at com.sonymix.activities.SplashActivity$$ViewBinder.bind(SplashActivity$$ViewBinder.java:9)
  at butterknife.ButterKnife.bind(ButterKnife.java:319)
  at butterknife.ButterKnife.bind(ButterKnife.java:237) 
  at com.sonymix.activities.BaseActivity.onCreate(BaseActivity.java:16) 
  at com.sonymix.activities.SplashActivity.onCreate(SplashActivity.java:33) 
  at android.app.Activity.performCreate(Activity.java:5372) 
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267) 
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359) 
  at android.app.ActivityThread.access$700(ActivityThread.java:165) 
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326) 
  at android.os.Handler.dispatchMessage(Handler.java:99) 
  at android.os.Looper.loop(Looper.java:137) 
  at android.app.ActivityThread.main(ActivityThread.java:5455) 
  at java.lang.reflect.Method.invokeNative(Native Method) 
  at java.lang.reflect.Method.invoke(Method.java:525) 
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
  at dalvik.system.NativeStart.main(Native Method) 

更新:

基础 Activity :

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ButterKnife.bind(this);
}

使用的支持库:

 compile 'com.android.support:appcompat-v7:23.1.1'

最佳答案

从基本 Activity 中删除绑定(bind)。当 ButterKnife 在基类中绑定(bind)时,您的布局还没有膨胀。
您还可以向字段添加 @Nullable 注释。

关于android - java.lang.IllegalStateException butterknife ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35770846/

相关文章:

android - 如何知道 Retrofit 调用何时完成

java - GPS 启用检查后销毁并重新启动应用程序

android - 如何完全重启应用程序?

安卓机器人 : how to go back to my Activity under test after clicking/launching another Activity

android - butterknife 安卓 : Unable to add Listener to View

Android:运行时错误 'Unable to create directory',使用类 DownloadManager,方法 setDestinationInExternalPublicDir

java - 将两个不断增长的数字相加的最有效方法

android - 将 SpotBugs 添加到我的项目中

android - 如何在 Baseactivity 和子 Activity 中处理 butterknife 绑定(bind)?

android - ButterKnife findByID 方法在版本 8.8.0 中已弃用