android - 在不调用 PreferenceActivity 的情况下获取默认共享首选项

标签 android

我定义了以下 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/

相关文章:

android - 如何在 react-native 中组合多个内联样式对象和内联 css?

android - XML 中的数据 : where to place it

Android 设备在 NativeScript CLI 中不可见

java - Android API 24 GNSSMeasurement 的构造函数不公开

java - 如何在recyclerview firebase中动态更改limitToFirst()?

android - 使用 Android 的 Intents 在 Waze 中开始导航

android - 如何在 Google Maps Android API V2 中将当前位置显示为箭头?

android - 使用远程计算机构建 Android 应用程序

android - 如何在android studio中创建32位apk

安卓销毁服务