【问题标题】:how to show selected data into summary of list preferences如何将所选数据显示到列表首选项摘要中
【发布时间】:2012-02-02 08:52:10
【问题描述】:

我是 android 编程新手。在我的应用程序中,我添加了首选项类,我正在调用存储在我的应用程序的 xml 文件夹中的 xml 首选项。这是它的代码

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <ListPreference android:title="colors" android:key="colors" android:summary="list of colors to choose from " android:entries="@array/list" android:entryValues="@array/lvalues"></ListPreference> </PreferenceScreen>

在 java 类中我只写了一行 addPreferencesFromResource(R.xml.prefs);

现在我可以显示偏好类以及列出一些颜色数据。

我的问题是关于选择列表首选项,它应该向我显示摘要属性中的所选首选项。目前它显示为“可供选择的颜色列表” 我想要的是显示所选颜色说我选择了白色摘要应该显示为白色。

请帮帮我。

谢谢, 麦迪。

【问题讨论】:

    标签: android preferences


    【解决方案1】:

    您实际上可以在 xml 中执行此操作。试试这个:

    <ListPreference
    android:key="pref_list"
    android:title="A list of preferences"
    android:summary="%s"
    android:entries="@array/pref_list_entries"
    android:entryValues="@array/pref_list_entries_values"
    android:defaultValue="0" />
    

    您选择的值将替换“%s”。 如需进一步说明,请阅读此post

    【讨论】:

      【解决方案2】:

      在另一个代码示例中,有一个小错误导致显示旧值而不是新值。

      这是一个工作版本:

      ListPreference splashList = (ListPreference) findPreference("splash");
      splashList.setSummary(splashList.getEntry());
      
      splashList.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
        public boolean onPreferenceChange(Preference preference, Object newValue) {
          String nv = (String) newValue;
      
          if (preference.getKey().equals("splash")) {
            ListPreference splashList = (ListPreference) preference;
            splashList.setSummary(splashList.getEntries()[splashList.findIndexOfValue(nv)]);
          }
          return true;
        }
      
      });
      

      【讨论】:

        【解决方案3】:

        您需要扩展 ListPreference 类并在 xml 文件中指定它

        class MyListPref extends ListPreference {
        
            public void onClick (DialogInterface dialog, int which) {
                this.setSummary(MyListPref.this.getEntry());
            }
        }
        

        如果您的自定义首选项类名称是 com.sample.MyListPref,则 xml 条目将为

         <com.sample.MyListPref
            android:key="pref_list"
            android:title="List Preference"
            android:dialogTitle="List Pref Dialog"
            android:entries="@array/pref_items"
            android:entryValues="@array/pref_items_values"/>
        

        【讨论】:

        • 很抱歉告诉你,但我无法理解如何做到这一点。我的 i 代码正是来自这个网站mobileorchard.com/android-app-developmentusing-preferences
        • 我实际上扩展了preferenceActivity所以怎么做先生,我的代码和这个网站上的完全一样
        • 好吧,我放了一个按钮,在 onclick 事件上,我调用了一个触发 prefs.java 类的意图。我将代码添加为 public class PrefActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState ) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs);并从 xml 资源中触发上述首选项 xml 文件。出于这个原因,我无法理解我应该在哪里将 listpreference 扩展为 allready 扩展的preferenceActivity。如果您能解释一下先生,这将对我有很大帮助
        【解决方案4】:

        您不需要扩展 listPreferences。在您的 PreferencesActivity 文件中按照我的示例放置:

        final ListPreference defaultTown=(ListPreference)findPreference(getString(R.string.pref_default_town_key));         
            Log.i("try",defaultTown.getKey());
        
            defaultTown.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
                public boolean onPreferenceChange(Preference preference, Object newValue) {            
                    Log.i("theApp", "Selected = " + defaultTown.getValue());  
                    defaultTown.setTitle(defaultTown.getValue());
                    return true;         
                } 
        
            });     
        

        更改值将更新标题 当您进入应用程序时,您需要使用您当前的偏好填充标题,而不是在您的 xml 中默认设置的颜色

        【讨论】:

          猜你喜欢
          • 2010-10-06
          • 2014-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多