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

时间:2011-06-23 13:54:53

标签: 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>

现在我将值设置为默认值,并希望在其他一些活动中读取此首选项,如下所示:

PreferenceManager.setDefaultValues(this, R.xml.hidden_prefs, false);        
prefs = PreferenceManager.getDefaultSharedPreferences(this);

但是在打电话时:

prefs.getString("testRestUrl", "");

我需要将默认值作为第二个参数,并且调用始终返回“”(如调用中所给出的),但不是XML android:defaultValue属性中给出的默认值。

如何获取首选项以获取默认值?

1 个答案:

答案 0 :(得分:1)

如果您没有实例化PreferenceActivity,我不相信您可以这样做。

最好的办法是在strings.xml或config.xml中定义一个String,并在代码中使用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>
相关问题