2010-09-23 76 views
0

我在我的應用程序下面的代碼在res/XML /的preferences.xml:Android如何獲得特定的偏好?


<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<PreferenceCategory android:title="Wi-Fi settings"> 


    <EditTextPreference 
      android:key="pref_voice_threshold_top" 
      android:title="@string/title_pref_voicetopthreshold" 
      android:dialogTitle="@string/dialog_title_pref_voicetopthreshold" 
      android:defaultValue="20" 
      android:inputType="number"/> 

</PreferenceCategory> 

</PreferenceScreen> 

,我想知道是否有可能對我來說,然後使用這個偏好代碼,所以我可以通過下載一個XML文件來更新它?

因此,我目前在PreferenceActivity中顯示上面的首選項,但工作正常,但我希望能夠通過每週從互聯網下載新設置來更新設置。

所以我的問題是如何在代碼中打開此首選項並將其值設置爲新下載的值?

回答

4

正如McStretch說,你必須得到優先與

sharedPreferences = getSharedPreferences("com.yourname.yourapp_preference", 0); 
Editor editor = sharedPreferences.edit(); 

editor.putString("your_optionname", "newValue"); 
// Save 
editor.commit(); 

的com.yourname.yourapp_preference是XML文件的名稱。它通常位於/data/data/com.yourname.yourapp/shared_prefs/com.yourname.yourapp_preference.xml

只需檢查該目錄以查看文件的命名方式,但基本上它應該默認爲packagename_perference .xml

2

看看這個帖子爲了搶一個偏好Editor對象:How do I set a preference in code?

之前你得到Editor

解析XML得到你想要的偏好值,然後使用Editor來檢索正確的首選項並隨後進行設置。

+0

感謝但我在getSharedPreferences中使用什麼字符串?我試過getSharedPreferences(「pref_voice_threshold_top」,0)和getSharedPreferences(「Wi-Fi設置」,0),但都返回null。 – 2010-09-23 16:05:51

+0

由於您使用的是PreferenceActivity,因此您可以使用以下方法:PreferenceActivity中的public Preference findPreference(CharSequence key)。 – McStretch 2010-09-23 16:35:57

+0

對不起,我不清楚那部分,我需要能夠從PreferenceActivity外部設置偏好,所以在這種情況下,我不使用PreferenceActivity,我想設置首選項 – 2010-09-23 16:44:16