2012-01-06 10 views
31

रूपएंड्रॉयड: जाँच लें कि मूल्य साझा पसंद में मौजूद है

preferences = getSharedPreferences("text", 0); 
final Editor editor = preferences.edit(); 

String s1 = serverIP.getText().toString(); 
String s2 = serverPort.getText().toString(); 
String s3 = syncPass.getText().toString(); 
String s4 = proxyServer.getText().toString(); 
String s5 = proxyPort.getText().toString(); 

editor.putString("SERVERIP", s1); 
editor.putString("SERVERPORT", s2); 
editor.putString("SYNCPASS", s3); 
editor.putString("PROXYSERVER", s3); 
editor.putString("PROXYPORT", s3); 

अनुसरण करता है और onCreate मैं TextViews का एक नया सेट में मान प्रदर्शित करना चाहते हैं मैं साझा पसंद बना रहा हूं, लेकिन पहली बार मैं नहीं साझा वरीयताओं में संग्रहीत कोई मूल्य है और एक पूर्ण सूचक अपवाद प्राप्त होगा।

तो मैं जानना चाहता हूं कि कोई अंतर्निहित विधि है या नहीं, जो साझा प्राथमिकताओं में कोई मान या नहीं है, ताकि मैं जांच सकूं कि मान मौजूद है और यदि नहीं, तो नए सेट को प्रतिस्थापित करें वरीयता मूल्य के साथ TextViews का।

उत्तर

106

आजमाएँ Javadocs को Accorting contains(String key) प्रयास करें, है

जांचता है कि वरीयताओं में वरीयता है या नहीं। वरीयताओं में वरीयता मौजूद है, अन्यथा गलत है।

+8

यह स्वीकार किया जाना चाहिए उत्तर –

+2

सहमत है, यह सही उत्तर – smoothumut

-1

आप कोशिश-पकड़ ब्लॉक का उपयोग क्यों नहीं करते?
यदि आपके पास मूल्य निर्धारित हैं और न कि नल पॉइंटर अपवाद फेंक दिया गया है तो आप उन्हें उपयोगकर्ता को दिखाएंगे। अन्यथा आप कैच ब्लॉक में जाएंगे जहां आप एप्लिकेशन के पहले लोड लोड को संभालेंगे। मुझे पता है कि यह "अंतर्निहित विधि" नहीं है, लेकिन यह काम करेगा।
एक अच्छा दिन है!

+0

यह does'n काम पाल ... किसी कारण से यह कहना है कि वह नहीं करता है सब – Vivekanand

20

SharedPreferences से मूल्यों को प्राप्त करने में कठिनाई के लिए हर विधि डिफ़ॉल्ट मान जिस स्थिति में लौट जाता है कुंजी मौजूद नहीं है

preferences = getSharedPreferences("text", 0); 
String value = preferences.getString("unknown_key",null); 
if (value == null) { 
    // the key does not exist 
} else { 
    // handle the value 
} 
+1

यह सही है, लेकिन क्या हुआ अगर कुंजी मौजूद है पर पकड़ के लिए जाना है, लेकिन मान रिक्त/बातिल है? उदाहरण: Kevin

+49

भले ही यह स्वीकार्य उत्तर है, मुझे पूरा यकीन है कि लेखक * वास्तव में * क्या देख रहा था 'प्राथमिकताएं ("अज्ञात_की"); ' ... उदाहरण के लिए, यदि आपके पास बूलियन वरीयता है तो जाहिर है कि यह या तो सच या गलत हो सकता है; यदि आप एक डिफ़ॉल्ट मान देते हैं, तो यह वापस आ जाएगा कि यदि यह अस्तित्व में नहीं है, भले ही यह वास्तविक संभव मूल्य हो, तो यह वास्तव में आपको नहीं बताएगा कि वरीयता मौजूद है या नहीं। – fatfreddyscat

+2

भ्रामक उत्तर - वास्तव में 'prefsEditor.putString ("अब कुंजी मौजूद है", शून्य) .commit();' पूरी तरह से कानूनी है, कुंजी मौजूद है और मान शून्य है - -1 –

9

SharedPreferences shf = getSharedPreferences("NAME_SharedPref", MODE_WORLD_READABLE); 
    String strPref = shf.getString("SERVERIP", null); 

    if(strPref != null) { 
    // do some thing 

    } 
+0

अच्छा उत्तर रिचा – Android

+0

यदि मैं जांचना चाहता हूं तो क्या होगा int मूल्य? –

0
LoadRuns(); 
if (loadedruns == 1) { 
Toast.makeText(MainActivity.this, "First run", Toast.LENGTH_SHORT).show(); 
} 
else { 
Toast.makeText(MainActivity.this, "No. runs: " + loadedruns, 
Toast.LENGTH_SHORT).show(); 
} 
loadedruns++; 
SaveRuns("runs", loadedruns); 


    public void SaveRuns(String key, int value){ 
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
SharedPreferences.Editor editor = sharedPreferences.edit(); 
editor.putInt(key, value); 
editor.commit(); 
} 
public void LoadRuns(){ 
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
loadedruns = sharedPreferences.getInt("runs", 1); 
} 
+0

है कृपया इस संदर्भ के लिए कुछ संदर्भ जोड़ें कि यह कोड क्यों काम करता है। जवाब बेहतर और अधिक उपयोगी बनाता है। धन्यवाद! :) – Alex

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