2011-06-23 35 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