【问题标题】:Android how to get specific preference?Android如何获得特定偏好?
【发布时间】:2010-09-23 14:47:09
【问题描述】:

我在 res/xml/preferences.xml 中的应用程序中有以下代码:


<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 中显示上述首选项,效果很好,但是我希望能够通过每周从互联网下载一个新设置来更新设置。

所以我的问题是如何在代码中打开此首选项并将其值设置为新下载的值?

【问题讨论】:

    标签: android xml android-preferences preference


    【解决方案1】:

    正如 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】:

      查看此帖子以获取 Preference Editor 对象:How do I set a preference in code?

      在你得到Editor之前:

      解析 XML 以获得所需的首选项值,然后使用 Editor 检索正确的首选项并随后进行设置。

      【讨论】:

      • 谢谢,但我在 getSharedPreferences 中使用什么作为字符串?我试过 getSharedPreferences("pref_voice_threshold_top", 0) 和 getSharedPreferences("Wi-Fi settings", 0) 但都返回 null。
      • 由于你使用的是 PreferenceActivity,你可以使用这个方法:public Preference findPreference(CharSequence key) found in PreferenceActivity。
      • 对不起,我不清楚那部分,我需要能够从 PreferenceActivity 外部设置 Preference,所以在这种情况下,我没有使用要设置 Preference 的 PreferenceActivity
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多