Android、Butterknife、BindView、Final

Android, Butterknife, BindView, Final

对此可能有一个简单的答案,但尝试充分使用 Butterknife,将一些 findViewById 转换为 @BindViews,并注意到我无法在需要声明为最终视图的视图上使用 BindView,因为 Java 引发“变量 'x' 可能尚未初始化”的错误。

显然,我不需要使用 BindView,只是对这个感到好奇,以了解更多有关 java 的信息。我读了一点关于最终声明的含义,但无法将其与 Butterknife 联系起来。感谢您的帮助。

与butterknife无关。如果要初始化声明为 final 的 member,可以在声明时或在构造函数中进行。在 findViewByIdButterknife 的情况下,这两个选项不在 table 范围内。在这两种情况下,您都使用 findViewById,它需要一个有效的 context 对象并且可以在 setContentView 之后成功使用,并且在初始化 final 时永远不会满足这两个条件成员。请注意,ButterKnife 使用代码生成,并且在后台它仍然像通常那样使用 findViewById