2011-05-17 11 views
9

मैं एंड्रॉइड built in way का उपयोग कर प्राथमिकताओं को संभालने के लिए उपयोग करता हूं जो एक XML फ़ाइल में सभी सेटिंग्स लिखकर काम करता है। यह वास्तव में अच्छा है लेकिन मुझे एक्सएमएल और जावा कोड में जादू तारों का उपयोग किये बिना इसे करने का कोई अच्छा तरीका नहीं मिल रहा है।जादू तारों के बिना एंड्रॉइड वरीयताओं को संभालना

एकमात्र तरीका जिसे मैं सोच सकता हूं स्ट्रिंग के रूप में वरीयता कुंजी को सहेजना है, लेकिन यह सही नहीं लगता है। किसी को भी इसे हल करने का एक अच्छा तरीका मिला है?

+0

प्रश्न क्या है? आप वरीयता स्क्रीन का उपयोग क्यों नहीं करना चाहते हैं? – Jim

+0

अस्पष्ट होने के लिए खेद है; मैं वरीयता स्क्रीन का उपयोग करना चाहता हूं लेकिन मैं अपने कोड में जादू तारों का उपयोग नहीं करना चाहता हूं। तो मैं xml में चाबियाँ स्टोर करने का एक तरीका ढूंढ रहा था। –

उत्तर

17

आप स्ट्रिंग संसाधनों के लिए अपने "जादू स्ट्रिंग" स्थानांतरित कर सकते हैं:

आप वरीयता xml फ़ाइल में:

<EditTextPreference 
     android:key="@string/preferences_pdn_key" 
     android:title="@string/preferences_pdn_title" 
     android:summary="@string/preferences_pdn_summary" 
     android:dialogMessage="@string/input_pdn_message" /> 

अपने values/strings.xml फ़ाइलों में:

... 
<string name="preferences_pdn_key">pdn</string> 
... 

फिर आप वरीयता संदर्भित कर सकते हैं आपके Activity या PreferenceActivity से:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
String pdnKey = getString(R.string.prefernece_pdn_key); 
String pdn = sharedPreferences.getString(pdnKey, null); 

आप हर समय आप अभी तक एक और चाल कर सकते हैं स्ट्रिंग संसाधनों से वरीयता कुंजी लाने के लिए पसंद नहीं है:

public class PreferenceNames { 

    /* categories */ 
    public static final String LoginCategory = MyApplication.getResourceString(R.string.preferences_login_category_key); 
    ... 

    /* preferences */ 
    public static final String Pdn = MyApplication.getResourceString(R.string.preferences_pdn_key); 
    ... 
} 

तो अब आप वरीयता कुंजी अगले रास्ता देख सकते हैं:

:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
String pdn = sharedPreferences.getString(PreferenceNames.Pdn, null); 

और यहाँ अपने MyApplication वर्ग की तरह दिखना चाहिए कैसे है

इसके अलावा आप अपने AndroidManifest.xml के बगल में बात जोड़ने की जरूरत:

<application android:name="com.mypackage.application.MyApplication" ... > 
... 
</application> 
+0

धन्यवाद। अनुवाद के दौरान समस्याओं से बचने के लिए स्ट्रिंग-एक्सएमएल से बचने के लिए यह अच्छा होगा, लेकिन यह एक प्रबंधनीय समस्या है। –

+0

क्या आप कृपया मुझे बता सकते हैं कि जादू के तार क्या हैं जो मैंने पहले सुना था: पी – ingsaurabh

+0

जब आप सीधे कोड में स्ट्रिंग लिखते हैं। अधिकांश उदाहरणों में मैंने वरीयता स्क्रीन के लिए देखा है, उन्होंने दोनों एक्सएमएल और जावा कोड में "सेटिंगकी" लिखा है। मैं हर बार सही नाम लिखने पर भरोसा नहीं करना चाहता हूं इसलिए मैं एक्सएमएल और जावा दोनों से एक ही स्ट्रिंग का संदर्भ देना चाहता हूं। –

0

मुझे लगता है कि आप [यहां] है जो खोज [1]

[1]: http://developer.android.com/guide/topics/data/data-storage.html साझा वरीयताओं पर एक नज़र ।

+0

हां, जिस तरह से मैं इसे करना चाहता हूं लेकिन मैं उन जादू तारों से बचना चाहता हूं जो वे अपने उदाहरण में उपयोग कर रहे हैं; बूलियन मूक = सेटिंग्स .getBoolean ("मूक मोड", झूठा); // मुझे "मूक मोड" नहीं चाहिए –

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