मैं साझा प्राथमिकताओं से डेटा प्राप्त करने और उस डेटा को सूची में डालने का प्रयास कर रहा हूं लेकिन यह मुझे त्रुटि प्राप्त कर रहा है। हालाँकि मैंने सूची को इनिशियलाइज़ किया है लेकिन फिर भी यह त्रुटि हो रही है

java.lang.NullPointerException: एक शून्य वस्तु संदर्भ पर इंटरफ़ेस विधि 'बूलियन java.util.List.add(java.lang.Object)' को लागू करने का प्रयास

Information info = new Information(name, mobile, email, zone, type);
List<Information> listItems = new ArrayList<>();
SharedPrefManager sharedPrefManager = new SharedPrefManager(getActivity());
listItems = sharedPrefManager.getDataFromSharedPreferences("info");
listItems.add(info);
sharedPrefManager.setDataToSharedPreferences("info", listItems);

यहाँ मेरा SharedPrefManager getData फंक्शन है:

public List<Information> getDataFromSharedPreferences(String key) {
        Gson gson = new Gson();
        SharedPreferences sharedPref = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        String jsonPreferences = sharedPref.getString(key, null);

        Type type = new TypeToken<List<Information>>() {
        }.getType();

        List<Information> contactList = gson.fromJson(jsonPreferences, type);
        return contactList;

    }
1
user7903200 23 अक्टूबर 2018, 00:06

1 उत्तर

सबसे बढ़िया उत्तर
String jsonPreferences = sharedPref.getString(key, null);

समस्याग्रस्त रेखा है। दूसरा पैरामीटर (जहां आप null पास कर रहे हैं), "def" पैरामीटर है, यानी अगर निर्दिष्ट कुंजी से मेल खाने वाली कोई वरीयता संग्रहीत नहीं है तो getString() द्वारा क्या लौटाया जाता है।

चूंकि वरीयता सेट नहीं की जा सकती है, यह संभव है कि jsonPreferences शून्य हो (जैसा कि यहां मामला है)। इसका मतलब है कि

List<Information> contactList = gson.fromJson(jsonPreferences, type);

विफल हो जाएगा, क्योंकि आप शून्य संदर्भ से कोई वस्तु नहीं बना सकते हैं; Gson एक अशक्त स्ट्रिंग को पार्स करने का प्रयास कर रहा है।

आपको अपने jsonPreferences असाइनमेंट के नीचे एक नल चेक जोड़ना चाहिए:

String jsonPreferences = sharedPref.getString(key, null);
if (jsonPreferences == null || jsonPreferences.isEmpty()) return new ArrayList<Information>(); //return an empty list if there's no data; also checking for an empty String
1
TheWanderer 22 अक्टूबर 2018, 21:29