2011-05-25 14 views
18

मेरे सेटिंग पेज में मेरे पास एक वरीयता है जो टॉगल-सक्षम सेटिंग्स की एक सूची प्राप्त करता है जिसे मैं व्यक्तिगत चेकबॉक्स वरीयताओं के रूप में प्रदर्शित करना चाहता था।चेकबॉक्स के साथ प्रोग्रामेटिक रूप से पॉपुलटिंग प्राथमिकताएं

मुझे पता है कि preferences.xml वरीयताओं की सूचियां उत्पन्न करने का समर्थन करता है (वाई-फाई सेटिंग पृष्ठ देख रहा है) लेकिन ListPreference केवल आपको सूची में से किसी एक को चुनने की अनुमति देता है।

मैं खोजशब्दों के माध्यम से वरीयताओं को उत्पन्न करने के लिए खोज रहा हूं लेकिन केवल यह पता चला है कि एक्सएमएल में पहले से मौजूद वरीयताओं के गुण कैसे बदल सकते हैं।

+2

यदि आपको केवल बहु पसंद सूची की आवश्यकता है, तो [MultiSelectListPreference] (http://developer.android.com/reference/android/preference/MultiSelectListPreference.html) – Jokahero

उत्तर

39

यहाँ एक छोटी उदाहरण है (यह मानते हुए आप PreferenceActivity बढ़ा रहे हैं):

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(this); 

    PreferenceCategory category = new PreferenceCategory(this); 
    category.setTitle("category name"); 

    screen.addPreference(category); 

    CheckBoxPreference checkBoxPref = new CheckBoxPreference(this); 
    checkBoxPref.setTitle("title"); 
    checkBoxPref.setSummary("summary"); 
    checkBoxPref.setChecked(true); 

    category.addPreference(checkBoxPref); 
    setPreferenceScreen(screen); 
} 
+0

वाह देखें जो कि शानदार रूप से आसान था! धन्यवाद! :) – isep

+0

खुशी यह उपयोगी था :) – inazaruk

+2

मेरी प्राथमिकता के लिए वास्तव में वरीयता स्क्रीन का उपयोग करने के लिए मुझे 'setPreferenceScreen (स्क्रीन);' भी कॉल करना पड़ा। – ndsc

1

प्रोग्राम के xml फ़ाइल में अन्य प्राथमिकताओं के साथ, एक प्राथमिकता जोड़ें: अन्य समाधान मेरे लिए काम नहीं किया है क्योंकि मैं भी एक था वरीयताओं के साथ एक्सएमएल। मुझे यकीन नहीं है कि ये सभी कॉल जरूरी/अनावश्यक हैं, लेकिन यह काम करता है।

setContentView(R.layout.preferences); 
addPreferencesFromResource(R.xml.preferences); 

PreferenceScreen pScreen = getPreferenceManager().createPreferenceScreen(this);  
CheckBoxPreference cb = new CheckBoxPreference(this); 
cb.setKey("cb"); 
cb.setTitle("BLAH"); 
cb.setOrder(99);  //not working... 
pScreen.addPreference(cb); 

setPreferenceScreen(pScreen); 
addPreferencesFromResource(R.xml.preferences); 

Sidenote::

OnCreate() विधि, वर्ग PreferenceActivity फैली जब से मैं एक गतिशील चेकबॉक्स सूची उत्पन्न करने की जरूरत है, यह सबसे अच्छा एक आंतरिक PreferenceScreen अंदर अनुकूल था। इसलिए मैंने इस वरीयता स्क्रीन को एक्सएमएल के अंदर बनाया, फिर इसके अंदर चेकबॉक्स को गतिशील रूप से जेनरेट किया। इस तरह से ऑर्डरिंग कोई फर्क नहीं पड़ता क्योंकि सभी 'नए' डायनेमिका चेकबॉक्स इस स्क्रीन के अंदर थे।

+0

एक्सएमएल और प्रोग्रामेटिक रूप से मिश्रण प्राथमिकताओं बहुत भ्रमित है। सभी प्राथमिकताओं को प्रोग्रामिक रूप से और व्यक्तिगत रूप से बनाया जा सकता है, मुझे लगता है कि प्रोग्रामेटिक दृष्टिकोण एक्सएमएल विधि के बाद कहीं अधिक सुविधाजनक है – slinden77

संबंधित मुद्दे