在每个片段中都找不到带有ID字段的Butterknife必需视图

时间:2018-12-22 13:32:23

标签: android kotlin butterknife

当我尝试将视图与Butterknife绑定在一起时,每次调用IllegalStateException方法后,都会得到这个ButterKnife.bind(this, fragmentView!!)

例如:

//...BindView section
@BindView(R.id.logoutButton)
lateinit var logoutButton: View

@BindView(R.id.closeSession)
lateinit var closeSessionButton: View

@BindView(R.id.settings)
lateinit var settingsButton: View

我明白了:

  

java.lang.IllegalStateException:       找不到字段logoutButton的ID为2131362018的必需视图登录。       如果此视图是可选的,请添加@Nullable(字段)或@Optional(方法)注释。

关键是我没有像异常所说的那样绑定“登录”视图。 我限制了“ logutButton”。 我确实有“登录”视图,但是在另一个与出现异常的片段没有任何联系的片段中。

这发生在每个片段,活动或适配器或其他需要用黄油刀绑定的视图中。  而且每当Butterknife尝试绑定时,就以声明顺序首先出现的字段的绝对随机视图(仅影响第一个@BindView注释,下一个注释很好)

我正在使用@Nullable批注,并且效果很好(即使删除了@Nullable批注-片段也可以正常工作)。但是我有很多片段和活动,因此无法检查所有片段和活动并添加@Nullable批注。

如何找到此问题的根源,以免再次发生?

3 个答案:

答案 0 :(得分:1)

在kotlin项目中使用Butterknife是毫无意义的。 Kotlin已经提供了直接轻松访问布局及其视图的方法。 https://kotlinlang.org/docs/tutorials/android-plugin.html

您应该停止使用黄油刀,并从gradle中删除该库。

答案 1 :(得分:0)

这就是我解决这个问题的方式:

  

构建->清理项目

一切都很好!

答案 2 :(得分:-1)

尝试添加此注释@Nullable@Optional。我已经从https://github.com/JakeWharton/butterknife/issues/343

获得了参考
@Nullable
@BindView(R.id.tvTitle)