2011-06-23 34 views
2

我有以下PreferenceActivity定义:获取默认共享偏好,而不调用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给出的默认值。

首选项应该如何访问以获取默认值?

回答

1

我不相信你可以做到这一点,如果你没有实例化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> 
+0

你是正确的,PreferenceManager在这种情况下是无用的。我改用了旧的R.values.my_settings.xml文件。 – Drejc