【发布时间】:2012-02-03 21:16:51
【问题描述】:
我的软件涉及大量更改图像。我不想重复查找资源编号,而是想创建一些常量来表示每个图像引用。到目前为止,这是我的尝试:
此尝试会在启动时产生强制关闭。
private final int EMPTY = getResources().getIdentifier("dotted_circle", "resId", "en.deco.android.livehud");
@Override
public void onCreate(Bundle savedInstanceState)
{
.....
}
此尝试返回错误“最终变量可能未初始化”。删除 final 允许它工作。
private final int EMPTY
@Override
public void onCreate(Bundle savedInstanceState)
{
EMPTY = getResources().getIdentifier("dotted_circle", "resId", "en.deco.android.livehud");
}
首先在这里使用常量是个好主意吗?
【问题讨论】:
-
我认为常量的全部意义在于您无法更改值?
-
我不想更改值。图像将在整个应用程序使用过程中保持相同的 id。
-
final字段必须在构建对象时设置,因此您必须在构造函数中设置它们。你不能在声明中这样做,因为你的对象还没有准备好,而且那里的方法可能会抛出你永远不会注意到的异常。 -
真的很奇怪。我在 Oracle 上的 Java 教程和文档 我确信我已经看到了将字段声明为最终实例一次并稍后为其设置值的可能性。唯一的问题 - 你不能做两次,你应该检查一下。你不是碰巧做过两次吗?
-
@Gangus 不。我假设同样的事情,我可以设置一次,不能再设置。
标签: java android constants imagebutton final