android - Can I not use SharedPreference inside a constructor? -
i'm using simple class perform actions (calculations) , want write value in sharedpreferences may later used.
however, not working. extended class activity can use getsharedpreferences()
method. incorrect , not allowed?
i'm getting null pointer exception trying initialize sharedpreference editor
code below:
public class jsonparser extends activity { // store our preferences json route info public static final string my_prefs_json = "jsonprefs"; // construct object json values public jsonparser(string jsonstring){ try { jsonobject jsonobject = new jsonobject(jsonstring); jsonarray routesarray = jsonobject.getjsonarray("routes"); // fails nullpointer sharedpreferences.editor editor = getsharedpreferences(my_prefs_json, mode_private).edit(); // store in sharedpreferences our json value editor.putstring("json", routesarray.tostring()); editor.commit(); } } }
adding error message:
java.lang.nullpointerexception: attempt invoke virtual method 'android.content.sharedpreferences android.content.context.getsharedpreferences(java.lang.string, int)' on null object reference
the activity context not created till oncreate()
gets invoked. so, if want involves context
in oncreate()
.
@override protected void oncreate(bundle savedinstancestate) { try { jsonobject jsonobject = new jsonobject(jsonstring); jsonarray routesarray = jsonobject.getjsonarray("routes"); // fails nullpointer sharedpreferences.editor editor = getsharedpreferences(my_prefs_json, mode_private).edit(); // store in sharedpreferences our json value editor.putstring("json", routesarray.tostring()); editor.commit(); } }
so in case - pass jsonstring
activity using intent.putextra()
when starting activity , fetch in oncreate()
using getintent().getstringextra()
Comments
Post a Comment