我是android编程的新手,在我正在编写的应用程序中,有一些部分需要从共享偏好中获取数据,这是在偏好活动中设置的。现在,首选项活动主要用XML编码,包括pref键,应用程序用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(); }
哪一个更好??我也不想给应用程序带来太多开销,所以如果它们都不好,我就不会使用它们。
第二个选项更好(这样查找的开销最小)
选项1有缺陷,因为它需要访问外部类中的资源。想要从另一个片段或活动中读取该值吗?