2014-01-27 41 views
1

我正在为我的应用制作首选项屏幕。在首选项屏幕中,我有一个ListPreference来关于应用程序的“传播单词”。但是,我不希望那里的单选按钮。我希望整个对话框看起来好像是用户可以做的事情列表,用户可以从菜单中选择一个将被执行的选项。我该怎么做?我是Android新手,来自iOS背景。没有收音机的ListPreference

在此先感谢!

enter image description here

我有这个在我的pref_settings.xml。

<PreferenceCategory 
    android:key="pref_key_tell_friends" 
    android:title="@string/pref_header_tell_friends" > 
    <ListPreference 
     android:entries="@array/spread_the_word" 
     android:entryValues="@array/spread_the_word" 
     android:key="pref_key_spread" 
     android:title="@string/pref_title_spread" /> 
</PreferenceCategory> 

,这我加载在我的活动片段 - 而不是ListPreference

public static class SettingsFragment extends PreferenceFragment { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      // Load the preferences from an XML resource 
      addPreferencesFromResource(R.xml.pref_settings); 
     } 
    } 
+0

发布您的代码。 – njzk2

+0

刚更新了代码 –

+1

的问题请参阅http://stackoverflow.com/questions/8382097/listpreferences-without-any-radio-buttons – njzk2

回答

1

一个首作品就像当它被指定为XML一个Preference任何按钮,或任何其他类型。所以,我只是在首选项中添加了一个侦听器,并在侦听器中打开了一个AlertDialog。下面的代码 -

public static class SettingsFragment extends PreferenceFragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Load the preferences from an XML resource 
     addPreferencesFromResource(R.xml.pref_settings); 

     Preference myPref = (Preference) findPreference("pref_key_spread"); 
     myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { 
        public boolean onPreferenceClick(Preference preference) { 
         createListPreferenceDialog(); 
         return false; 

        } 
       }); 
    } 

    private void createListPreferenceDialog() { 

     Dialog dialog; 
     final String[] str = getResources().getStringArray(R.array.spread_the_word); 
     AlertDialog.Builder b = new AlertDialog.Builder(getActivity()); 
     b.setTitle("Spread the Word"); 

     b.setItems(str, new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int position){ 

       Log.I(“Clicked the AlertDialog", + str[position]); 
      } 
     }); 

     dialog = b.create(); 
     dialog.show(); 

    } 
} 

而这里的改变XML -

<PreferenceCategory 
     android:key="pref_key_tell_friends" 
     android:title="@string/pref_header_tell_friends" > 
     <Preference 
      android:key="pref_key_spread" 
      android:title="@string/pref_title_spread" /> 
    </PreferenceCategory> 

感谢@ njzk2的指针。