2014-01-27 39 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的指針。