【发布时间】:2015-03-20 16:04:13
【问题描述】:
我是 android 编程的新手,在我编写的应用程序中,有些部分需要从共享偏好中获取数据,这些偏好设置在偏好活动中。 现在,偏好活动主要是用 XML 编码的,包括首选项键,并且应用程序在 Java 代码中获取这些数据。到目前为止,一切都很好。 问题在于拼写错误,假设我在 XML 中编写“Settings1”,在 Java 中编写“settings1”,我可能会烧掉所有的想法,但我不会看到。为避免这种情况,我将字符串保存在 java 类中,并使用相同的字符串保存在 XML 资源文件中。但还是同样的问题。
<resources>
<string name="SETTINGS1">Settings1</string>
</resources>
class Keys {
public static final String SETTINGS1 = "Settings1";
}
<SwitchPreference
android:key="@string/SETTINGS1" />
if(sharedPref.getBoolean(Keys.SETTINGS1, true)){ doSomething(); }
但我只想写一次键值,所以我想出了两个可能的解决方案。 第一个:
<resources>
<string name="SETTINGS1">Settings1</string>
</resources>
class Keys {
public static final String SETTINGS1 = resources.getString(R.string.SETTINGS1);
}
<SwitchPreference
android:key="@string/SETTINGS1" />
if(sharedPref.getBoolean(Keys.SETTINGS1, true)){ doSomething(); }
或者:
<resources>
<string name="SETTINGS1">Settings1</string>
</resources>
<SwitchPreference
android:key="@string/SETTINGS1" />
if(sharedPref.getBoolean(getString(R.string.SETTINGS1, true)){ doSomething(); }
哪个更好??我也不想给应用程序引入太多的开销,所以如果它们都不好,我就不会使用它们。
【问题讨论】:
-
我不是专家,但在我看来它们并没有太大的不同。也许您应该选择您认为更具可读性的那个?此外,使用 Strings.xml 的一个优点是可以从任何文件中引用该字符串,而不仅仅是您拥有的当前文件。
-
应用程序的每个类都可以使用类键,这在这里并不重要