从XML文件获取整数并设置为静态变量?

时间:2017-09-08 20:17:55

标签: java android integer

在Android Studio中,我有一个integer.xml文件,我在其中定义了两个整数。最小和最大如果我将min设置为8,我如何获得此值并在Java中将其设置为静态?

类似的东西:

private static final int MIN = getInteger(R.integer.min);

我知道这与使用R.id.string获取字符串非常不同。

无论我尝试什么,我都会遇到有关静态和非静态方法的错误。

2 个答案:

答案 0 :(得分:2)

您不能以这种方式初始化final static变量。最终的静态变量必须在声明的地方或static {}块中初始化,即在创建任何类的实例之前。 但是,资源不是静态的。因此,您无法使用this.getResources().getInteger()对其进行初始化:getResources()方法需要一个当时未初始化的Context。

一种解决方案是直接初始化变量:

static final int MIN = 8;

或者,您可以将其设为非static并在onCreate()初始化。

答案 1 :(得分:1)

要访问getInteger方法,首先需要resource的实例。您通常可以通过Context类的getResources方法(Activity,Service等)来实现。因此,要在静态声明中访问上下文实例,您需要获取对上下文的静态引用,这通常是一个坏主意,导致内存泄漏。我建议在不使用资源的情况下声明这些常量,仅在代码中。如果您有某些特定原因要将这些常量保留在资源中,请保留对application的引用并按预期使用它。