我是Android编程的新手,在应用程序中,我编码的部分需要从共享首选项中获取数据,这是在首选项活动中设置的。 现在,首选项活动主要用XML编码,包括pref键,应用程序用Java代码获取这些数据。到现在为止还挺好。 错字来自拼写错误,让我说我写了#34;设置1"用XML和" settings1"在java中,我可能会烧掉每个想法调试,但我不会看到它。为了避免这种情况,我将字符串保存在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(); }
哪一个更好?我也不想为应用程序引入太多开销,所以如果它们都不好,那么我就不会使用它们。
答案 0 :(得分:1)
第二个选项更好(并且进行这样的查找的开销很小)
选项1存在缺陷,因为它需要访问外部类中的资源。想要从其他片段或活动中读取该值吗?