Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我可以使用单个settings.xml<;首选屏幕>;元素位于不同的位置,具有动态生成的键?_Android_Android Preferences_Android 2.3 Gingerbread - Fatal编程技术网

Android 我可以使用单个settings.xml<;首选屏幕>;元素位于不同的位置,具有动态生成的键?

Android 我可以使用单个settings.xml<;首选屏幕>;元素位于不同的位置,具有动态生成的键?,android,android-preferences,android-2.3-gingerbread,Android,Android Preferences,Android 2.3 Gingerbread,首先,我使用的是API级别10,因此我需要使用旧的、不推荐的API作为首选项的解决方案 我在settings.xml中定义了一个,如下所示(有更多的首选项,但为了便于说明,我只包括了一个: <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <CheckBoxPreference android:key="@string/key_pref_match_loca

首先,我使用的是API级别10,因此我需要使用旧的、不推荐的API作为首选项的解决方案

我在
settings.xml
中定义了一个
,如下所示(有更多的首选项,但为了便于说明,我只包括了一个:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
  <CheckBoxPreference 
    android:key="@string/key_pref_match_locality" 
    android:defaultValue="false"
    android:title="@string/title_pref_match_locality"
    android:summary="@string/summary_pref_match_locality" />
</PreferenceScreen>

现在,我希望我的应用程序的结构是在多个位置使用此首选项屏幕。如何使用?想象一下这种情况:

  • 我有一份被分配到不同小组的人的名单。例如,“朋友”、“家人”、“同事”
  • 我希望有一组与“默认”组以及每个单独的组关联的首选项。在本例中,我总共有4组首选项--默认、朋友、家人、同事--然后将它们上载到服务器上
  • 理想情况下,我希望首选项的键指示它是哪种首选项。因此,对于默认组的首选项,我希望首选项的键是
    “default\u pref\u match\u locality”
    ,对于组“Friends”,它应该是
    “group\u Family\u pref\u match\u locality”


    是否有一种方法可以使用
    设置.xml中定义的单个
    ,动态创建多个屏幕实例,这些实例都使用不同的键?

    是的,可以。只需在需要的任何地方加载
    首选项屏幕
    ,膨胀
    首选项
    元素并更改其键即可y使用Preference.setKey()方法。这应该会起作用。

    不确定我应该在哪里更改键?一旦我使用addPreferencesFromResource()在我的PreferenceActivity中扩展了首选项,我如何访问加载的首选项?(我假设这就是您提到的扩展方法)@mganjoo,是的,你是对的。然后你可以使用PreferenceActivity.FindReference()方法获取对首选项的引用,该方法以键为参数。该过程类似于在简单活动中获取对视图的引用。