当我尝试将视图与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
批注。
如何找到此问题的根源,以免再次发生?
答案 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)