我定义了以下 PreferenceActivity:
public class HiddenPreferences extends PreferenceActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.hidden_prefs);
}
}
hidden_prefs.xml 看起来像这样:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference android:key="testRestUrl"
android:title="REST service URI"
android:defaultValue="http://service/url">
</EditTextPreference>
</PreferenceScreen>
现在我将值设置为默认值,并希望在其他一些 Activity 中读取此首选项,如下所示:
PreferenceManager.setDefaultValues(this, R.xml.hidden_prefs, false);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
但是调用时:
prefs.getString("testRestUrl", "");
我需要将默认值作为第二个参数,调用总是返回“”(在调用中给出)但不是 XML android:defaultValue 属性中给出的默认值。
应该如何访问首选项才能获得默认值?
最佳答案
如果不实例化 PreferenceActivity,我认为您无法做到这一点。
最好的办法是在 strings.xml 或 config.xml 中定义一个字符串并在代码中使用 R.strings.testRestUrl:
prefs.getString("testRestUrl", getString(R.string.testRestUrl));
和 XML:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference android:key="testRestUrl"
android:title="REST service URI"
android:defaultValue="R.string.testRestUrl">
</EditTextPreference>
</PreferenceScreen>
关于android - 在不调用 PreferenceActivity 的情况下获取默认共享首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6455186/