2010-09-23 46 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