2011-03-02 13 views
20

वरीयताओं पर मेरा पहला प्रयास PreferenceActivity के ज्ञान के बिना था। तो अब मेरे पास एक ऐप है जो सभी उपयोगकर्ता प्राथमिकताओं को एक विशिष्ट वरीयता फ़ाइल में संग्रहीत करता है।वरीयता सक्रियता एक कस्टम वरीयता फ़ाइल का उपयोग कैसे कर सकती है

मैं वरीयता सक्रियता का उपयोग करने के लिए माइग्रेट करना चाहता हूं लेकिन मैं चाहता हूं कि मेरे उपयोगकर्ता अपनी वरीयताएं रखें।

क्या मेरी वरीयता सक्रियता को सभी प्राथमिकताओं के लिए उस विशिष्ट फ़ाइल का उपयोग करने का कोई तरीका है?

+0

आप अपनी पुरानी प्राथमिकताओं को पढ़ते हुए एक विधि लिख सकते हैं और नियमित प्राथमिकताओं के रूप में उन्हें सहेज सकते हैं – Maaalte

+0

मैंने माइग्रेशन को एक समाधान के रूप में सोचा था। लेकिन फिर मैं माइग्रेशन कोड से कभी छुटकारा नहीं पा सकता हूं? यह सुनिश्चित करने का कोई तरीका नहीं है कि मेरे ऐप के पुराने संस्करण नहीं हैं। – Yashima

उत्तर

1

आप अपने ऐप की शुरुआत में सभी वरीयताओं को पढ़ सकता है, और उसके बाद का उपयोग कर

Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit(); 
e.putBoolean("yourPreference", true); 
e.putString("yourOtherPreference", "This is the Value"); 
... 
e.commit(); 

मुझे आशा है कि मदद करता है

+0

मैंने इस संस्करण को अभी लागू किया है, भले ही मैंने शुरुआत में एंड्रयू के फ़ाइल विचार का नाम बदलना पसंद किया। मैंने कभी नहीं पाया कि बाद वाले को कैसे करना है और इसलिए मैं स्पष्ट के साथ अटक गया। धन्यवाद! – Yashima

+0

अच्छा, मुझे खुशी है कि इससे मदद मिली! – raukodraug

0

Maaalte सही है Preferences में उन्हें स्टोर, आप क्या करना चाहते क्या है अपनी कस्टम फ़ाइल के अस्तित्व के लिए परीक्षण करें और यदि यह वहां है, तो इसे मानक साझा वरीयताओं फ़ाइल नाम पर पुनर्नामित करें।

एक और विकल्प अपने पुराने prefs को एक-एक करके पढ़ना है और साझा प्राथमिकताओं API का उपयोग उन्हें जोड़ने के लिए उन्हें जोड़ने के लिए करें और फिर जब आप पूरा कर लें तो अपने पुराने prefs को हटा दें।

63

यह इस पोस्ट करने के लिए बहुत देर हो चुकी हो सकता है, लेकिन आप एक अच्छा समाधान यहाँ

आप इस तरह पहले से डिफ़ॉल्ट साझा वरीयताओं फ़ाइल का नाम सेट पा सकते हैं:

public class MyPreferencesActivity extends PreferenceActivity { 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     PreferenceManager prefMgr = getPreferenceManager(); 
     prefMgr.setSharedPreferencesName("my_preferences"); 
     prefMgr.setSharedPreferencesMode(MODE_WORLD_READABLE); 

     addPreferencesFromResource(R.xml.preferences); 
    } 
} 

मुझे उम्मीद है कि यह किसी की मदद करेगा।

सम्मान।

+4

अच्छा जवाब (हालांकि बहिष्कृत ...) संपादित किया गया क्योंकि लिंक टूटा गया था - और लिंक से कोड कॉपी किया गया। हालांकि IMHO 'MODE_WORLD_READABLE' का उपयोग करने की गलती है। –

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