मैं इस प्रकार एक सरल (नहीं उपयोगकर्ता के संपादन योग्य) संख्यात्मक सेटिंग एक वरीयताओं एक्सएमएल में परिभाषित किया गया है:SharedPreferences.getInt() परिणाम क्लासकास्टएक्सप्शन में - क्यों?
<EditTextPreference
android:key="@string/numeric_val"
android:defaultValue="0" />
और मैं इस सरल कथन का उपयोग यह पढ़ें:
sharedPrefs.getInt(getString(R.string.numeric_val), 3)
यह काम करता है, लेकिन जब मैं इसे पढ़ने की कोशिश करता हूं, एप्लिकेशन को इंस्टॉल करने के बाद पहली बार, यह ClassCastException
उत्पन्न करता है।
documentation कहता है कि getInt()
"क्लासकास्ट अपवाद को फेंकता है यदि इस नाम के साथ वरीयता है जो एक int नहीं है।" - और मुझे पता है कि यह वरीयता स्पष्ट रूप से <EditTextPreference>
(एक स्ट्रिंग?) के रूप में परिभाषित की गई है, लेकिन अगर यह अपवाद का कारण है, तो मुझे SharedPreferences.getInt()
का उपयोग कैसे करना चाहिए?
मुझे पता है कि मैं इसके बजाय SharedPreferences.getString()
का उपयोग कर सकता हूं और फिर पार्सिंग/रूपांतरण स्वयं कर सकता हूं, लेकिन फिर SharedPreferences.getInt()
का उद्देश्य क्या है?
यह बहुत ही शिक्षित स्पष्टीकरण के लिए धन्यवाद की एक्सएमएल में एक वास्तविक पूर्णांक घोषित करने के लिए कोई तरीका नहीं है। +1 और स्वीकार कर रहा है। – uTubeFan