代码之家  ›  专栏  ›  技术社区  ›  mdadil2019

Java语言lang.illegalStateException:巴特奈夫

  •  3
  • mdadil2019  · 技术社区  · 9 年前

    我正在使用butterknife绑定我的视图,所以当活动开始时,会抛出以下异常

    Java语言lang.RuntimeException:无法启动活动组件信息{..包名称…}:Java语言lang.IllegalStateException:未找到字段“tabItem”和方法“check”的ID为2131558524的必需视图“l”。如果此视图是可选的,请添加“@Nullable”(字段)或“@optional”(方法)注释。

    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();
         }
    }
    
    5 回复  |  直到 9 年前
        1
  •  9
  •   Aalap Patel    9 年前

    如果您的TabItem还没有准备好,那么可以使用它来声明变量及其相应的onclick。

    here

     @Nullable
     @BindView(R.id.l)TabItem tabItem;
    
     @Optional
     @OnClick(R.id.l)
      void check(){
         //method logic...
      }
    
        2
  •  2
  •   Jorge Casariego    8 年前

    在我的例子中,这个错误是因为我对不同的版本使用了两种布局:

    • activity\u登录。xml

    • activity\u登录。xml(v21)

    进度列 activity\u登录。xml 但是

    activity\u登录。xml(v21) .

        3
  •  2
  •   Bakavani    6 年前

        4
  •  0
  •   ste9206    9 年前
    1. 检查您是否已输入 build.gradle (模块:app)

      dependencies {
      annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
      provided 'javax.annotation:jsr250-api:1.0'
      compile 'com.jakewharton:butterknife:8.5.1'
      
      }
      
    2. 检查您的id是否存在

    3. 尝试添加 @OnClick(R.id.l)void check(View v){ ... }

        5
  •  0
  •   GFPF    8 年前

    在我的活动类中将注释@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;
        }
    }
    

    导入依赖项并绑定活动:

    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);
        }
    }
    

    buildscript {
      repositories {
        mavenCentral()
       }
      dependencies {
        classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
      }
    }
    

    和你的应用程序/版本。格拉德尔

    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'
    }