【问题标题】:Android, Butterknife, BindView, FinalAndroid, 黄油刀, BindView, 最终
【发布时间】:2016-12-09 15:05:05
【问题描述】:

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

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

【问题讨论】:

    标签: java android butterknife


    【解决方案1】:

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

    【讨论】:

    • 这似乎在代码中起作用:final EditText randomvar = (EditText) activityReference.findViewById(R.id.randomID);
    • 在方法内部和 setContetView 之后,当然可以了
    • 好吧,这就是混乱的来源,因为那行代码是在 Activity 外部的类内部调用的,而被引用的 Activity 却调用了 setContentView。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2014-07-30
    • 2019-03-11
    相关资源
    最近更新 更多