java - NullPointerException at getDefaultSharedPreferences -
i'm creating preferencefragment
based on developer guide nullpointerexception
@ getdefaultsharedpreferences()
call in oncreate()
when try restore saved user preferences. inflate preferencefragment
xml , set default values too. exception thrown @ getdefaultsharedpreferencesname()
within getdefaultsharedpreferences()
.
here preferencefragment
class:
public class settingsfragment extends preferencefragment implements onsharedpreferencechangelistener { public static final string key_max_walk_distance_preference = "max_walk_distance_preference"; public static final string key_max_search_time_preference = "max_search_time_preference"; context context = getactivity(); @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // load preferences xml resource addpreferencesfromresource(r.xml.preferences); // load user preferences sharedpreferences sharedpreferences = preferencemanager .getdefaultsharedpreferences(context); if (sharedpreferences != null) { preference walkdistance = findpreference(key_max_walk_distance_preference); if (walkdistance != null) { walkdistance.setsummary(sharedpreferences.getstring( key_max_walk_distance_preference, "") + getresources().getstring( r.string.max_walk_distance_postfix)); } preference searchtime = findpreference(key_max_search_time_preference); if (searchtime != null) { searchtime.setsummary(sharedpreferences.getstring( key_max_search_time_preference, "") + getresources().getstring( r.string.max_search_time_postfix)); } } } @override public void onsharedpreferencechanged(sharedpreferences sharedpreferences, string key) { if (key.equals(key_max_walk_distance_preference)) { preference walkdistance = findpreference(key); // set summary user-description selected value walkdistance.setsummary(sharedpreferences.getstring(key, "") + getresources().getstring( r.string.max_walk_distance_postfix)); } else if (key.equals(key_max_search_time_preference)) { preference searchtime = findpreference(key); // set summary user-description selected value searchtime.setsummary(sharedpreferences.getstring(key, "") + getresources() .getstring(r.string.max_search_time_postfix)); } } @override public void onresume() { super.onresume(); getpreferencescreen().getsharedpreferences() .registeronsharedpreferencechangelistener(this); } @override public void onpause() { super.onpause(); getpreferencescreen().getsharedpreferences() .unregisteronsharedpreferencechangelistener(this); }
}
here xml:
<?xml version="1.0" encoding="utf-8"?> <preferencescreen xmlns:android="http://schemas.android.com/apk/res/android" > <edittextpreference android:dialogtitle="@string/max_walk_distance_dialogtitle" android:key="max_walk_distance_preference" android:summary="@string/max_walk_distance_summary" android:title="@string/max_walk_distance_title" android:inputtype="number" android:defaultvalue="500" /> <edittextpreference android:dialogtitle="@string/max_search_time_dialogtitle" android:key="max_search_time_preference" android:summary="@string/max_search_time_summary" android:title="@string/max_search_time_title" android:inputtype="number" android:defaultvalue="10"/> </preferencescreen>
context context = getactivity();
your fragment not associated activity when object instantiated , getactivity()
returns null
. hence npe when trying preferences null context
.
postpone getactivity()
e.g. oncreate()
(which called after onattach()
).
Comments
Post a Comment