将项目划分为模块后,Butterknife无法绑定视图

时间:2018-04-17 10:25:00

标签: android butterknife

我已开启ButterKnife.setDebug(BuildConfig.DEBUG)

发生的事情是,现在一直工作的类无法找到视图的绑定。调用ButterKnife.bind(this);后,视图仍然为空,当我检查日志时,我看到以下内容:

16401-16401 D/ButterKnife: Looking up binding for com.mobile.myapp.presentation.view.controllers.login.activities.WelcomeActivity
16401-16401 D/ButterKnife: Not found. Trying superclass com.mobile.myapp.presentation.view.base.myappBaseMvpActivity
16401-16401 D/ButterKnife: Not found. Trying superclass com.hannesdorfmann.mosby.mvp.MvpActivity
16401-16401 D/ButterKnife: Not found. Trying superclass android.support.v7.app.AppCompatActivity
16401-16401 D/ButterKnife: MISS: Reached framework class. Abandoning search.

所以我认为它可能是注释处理器依赖。我在每个模块中添加了以下内容:

implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

但是同样的问题和没有视图得到绑定,有null。我意识到我可以切换到Kotlin,但我有很多Java类,更喜欢使用Butterknife进行绑定。我错过了什么这些问题在运行时发生。

这是一个空绑定的示例类:

public class WelcomeActivity extends myappBaseMvpActivity<WelcomeView, WelcomePresenter> implements WelcomeView {

    @Nullable
    @BindView(R.id.btn_showlogin)
    Button btn_login; //this is null


    @Nullable
    @BindView(R.id.pager)
    ViewPager mViewPager; //this is null, why ?

    @Override
    protected void onResumeFragments() {
        super.onResumeFragments();
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);
        ButterKnife.bind(this);

        mViewPager.setAdapter(new WelcomeIntroPagerAdapter(getSupportFragmentManager()));
    }
//...
}

更新:我已将我的代码转换为KOTLIN以解决这些问题,但我们仍然不知道为什么BUTTERKNIFE失败。

3 个答案:

答案 0 :(得分:0)

文件&GT;设置 - &gt;插件 - &gt; Android ButterKnife Zelezny

请按照以下步骤安装插件。

答案 1 :(得分:0)

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import this above class or check

https://github.com/JakeWharton/butterknife#download

答案 2 :(得分:0)

如果您具有Kotlin依赖关系,则应使用kapt代替注解处理器

//View Binding and Logging
implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT'
kapt 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'

以上是AndroidX的版本,但您可以将其与现有版本一起使用。只需使用kapt! 另外,如果您已将库更新为androidx或gradle插件已更新,则应使用该库的最新版本! 让我知道是否有帮助。