java - Accessing shared preferences in a non-activity class from fragment class -


i have fragment:

public class todayverse extends fragment {     textview textview;      dailyquranmethods dailyquranmethods;      public todayverse() {         // required empty public constructor     }       @override     public view oncreateview(layoutinflater inflater, viewgroup container,                              bundle savedinstancestate)     {         // inflate layout fragment         view view = inflater.inflate(r.layout.fragment_today_verse, container, false);         textview = (textview) view.findviewbyid(r.id.verse); //        setchapterverse();          textview.settext(dailyquranmethods.getversetoday(dailyquranmethods.datetoday(),getactivity().getapplicationcontext()) + "\nchapter:" + dailyquranmethods.getchaptertodayname(dailyquranmethods.datetoday(),getactivity().getapplicationcontext()));         return view;     } } 

this fragment calls non-activity class : dailyquranmethods uses sharedprefrences. purpose, had pass context parameter. passed:

getactivity().getapplicationcontext()

the methods in dailyquranmethods like:

   public string getversetoday(string today,context context){ ... } 

on running app, have following logcat:

06-19 06:07:56.587 9887-9887/? e/androidruntime﹕ fatal exception: main java.lang.nullpointerexception @ com.example.shiza.dailyquranverses.todayverse.oncreateview(todayverse.java:35) @ android.support.v4.app.fragment.performcreateview(fragment.java:1789) @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:955) @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1138) @ android.support.v4.app.backstackrecord.run(backstackrecord.java:740) @ android.support.v4.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1501) @ android.support.v4.app.fragmentmanagerimpl.executependingtransactions(fragmentmanager.java:490) @ android.support.v4.app.fragmenttabhost.onattachedtowindow(fragmenttabhost.java:283) @ android.view.view.dispatchattachedtowindow(view.java:9788) @ android.view.viewgroup.dispatchattachedtowindow(viewgroup.java:2198) @ android.view.viewgroup.dispatchattachedtowindow(viewgroup.java:2206) @ android.view.viewgroup.dispatchattachedtowindow(viewgroup.java:2206) @ android.view.viewgroup.dispatchattachedtowindow(viewgroup.java:2206) @ android.view.viewgroup.dispatchattachedtowindow(viewgroup.java:2206) @ android.view.viewgroup.dispatchattachedtowindow(viewgroup.java:2206) @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:971) @ android.view.viewrootimpl.handlemessage(viewrootimpl.java:2467) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:137) @ android.app.activitythread.main(activitythread.java:4424) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551) @ dalvik.system.nativestart.main(native method)

the error in following line:

textview.settext(dailyquranmethods.getversetoday(dailyquranmethods.datetoday(),getactivity().getapplicationcontext()) + "\nchapter:" + dailyquranmethods.getchaptertodayname(dailyquranmethods.datetoday(),getactivity().getapplicationcontext()));

looks like, unable context in non-activity class. tried lot, nothing helped. please me solve this.

edit 1 : non-activity class is:

package com.example.shiza.dailyquranverses;  import android.content.context; import android.content.sharedpreferences; import android.database.matrixcursor; import android.preference.preferencemanager; import android.provider.basecolumns; import android.widget.simplecursoradapter;  import java.text.simpledateformat; import java.util.calendar; import java.util.random; import com.example.shiza.dailyquranverses.todaychapter; import android.preference.preference;  /**  * created shiza on 19-06-2015.  */ public class dailyquranmethods {      //    generate random number.     sharedpreferences sharedpreferenceschapter;     sharedpreferences sharedpreferencesverse;     private static string today_chapter = "today_chapter";     private static string today_verse = "today_verse";     context context;         public int getrandom(int min, int max) {         random ran = new random();         return ran.nextint((max - min) + 1) + min;     }       public void setchapterverseoftoday(context context)     {          sharedpreferenceschapter = context.getsharedpreferences(today_chapter, context.mode_private);         sharedpreferencesverse = context.getapplicationcontext().getsharedpreferences(today_verse, context.mode_private);         sharedpreferences.editor editor_chapter = sharedpreferenceschapter.edit();         sharedpreferences.editor editor_verse = sharedpreferencesverse.edit();           int chapter_no = getrandom(1, 114);          string chapter_array_name = "chapter_" + chapter_no;          string verse = sharedpreferencesverse.getstring(datetoday(),null);          if ( verse == null )         {             editor_verse.putstring(datetoday(), getverse(context,chapter_array_name));             editor_verse.apply();         }          int chapter_number = sharedpreferenceschapter.getint(datetoday(),0);          if ( chapter_number == 0 )         {              editor_chapter.putint(datetoday(),chapter_no);             editor_chapter.apply();         }       }     public string getversetoday(string today,context context)     {         sharedpreferencesverse = context.getsharedpreferences(today_verse, context.mode_private);         return sharedpreferencesverse.getstring(today,"7. way of on whom have bestowed grace, not (the way) of earned anger (such jews), nor of went astray (such christians).");     }      public string getverse(context context,string chapter_array_name)     {         int id = context.getresources().getidentifier(chapter_array_name, "array", context.getpackagename());         string[] chapter = context.getresources().getstringarray(id);         int random_verse = getrandom(1, chapter.length - 1);         return chapter[random_verse];     }       public string[] getchaptertodaycontent(string today,context context)     {         sharedpreferenceschapter = context.getsharedpreferences(today_chapter, context.mode_private);         int chapter_no = sharedpreferenceschapter.getint(today, 2);         string chapter_array_name = "chapter_" + chapter_no;         int id = context.getresources().getidentifier(chapter_array_name, "array", context.getapplicationcontext().getpackagename());         return context.getresources().getstringarray(id);     }      public string getchaptertodayname(string today,context context)     {         sharedpreferenceschapter = context.getapplicationcontext().getsharedpreferences(today_chapter,context.mode_private);         int chapter_no = sharedpreferenceschapter.getint(today, 0);         string[] chaptername = context.getresources().getstringarray(r.array.chapters);         return chaptername[chapter_no - 1];     }        public string datetoday()    {        calendar c = calendar.getinstance();         simpledateformat df = new simpledateformat("ddmmyyyy");        return df.format(c.gettime());    }       //    quran verses in android     public string[] getquranverses(context context) {         string[] whole_quran = new string[7000];         string[] current_chapter;         string chaptersize = "";         string[] chapter_names;         string chapter_array_name;         int total_verse = 0, verse_in_current_chapter, chapter_number;          chapter_names = context.getresources().getstringarray(r.array.chapters);          (chapter_number = 1; chapter_number < 114; chapter_number++) { //            grab each chapter containing verse quran             chapter_array_name = "chapter_" + chapter_number;             int id = context.getresources().getidentifier(chapter_array_name, "array", context.getpackagename());             current_chapter = context.getresources().getstringarray(id);              (verse_in_current_chapter = 1; verse_in_current_chapter < current_chapter.length - 1; verse_in_current_chapter++) {                 whole_quran[total_verse] = current_chapter[verse_in_current_chapter] + "," + chapter_names[chapter_number - 1];                 total_verse++;             }             chaptersize += chapter_number + ":" + chapter_names[chapter_number - 1] + ":" + current_chapter.length + "\n";         }         return whole_quran;      }      //    public void search() //    { //        //      use search view on top of app // //        search = (searchview) findviewbyid(r.id.mysearchview); //        search.setqueryhint("search qur'an"); // ////      create suggestion adapter dropdown //        final string[] = new string[] {"cityname"}; //        final int[] = new int[] {android.r.id.text1}; //        madapter = new simplecursoradapter(this, //                android.r.layout.simple_list_item_2, //                null, //                from, //                to, //                cursoradapter.flag_register_content_observer); // //        search.setsuggestionsadapter(madapter); // //        search.setonsuggestionlistener(new searchview.onsuggestionlistener() { //            @override //            public boolean onsuggestionclick(int position) { //                // code here // // //                cursor thecursor = (cursor) madapter.getcursor(); //                string selecteditem = thecursor.getstring(position); ////                toast.maketext(getbasecontext(), " on suggestion click position , item is" + position + selecteditem, toast.length_long).show(); // // //                startactivity(new intent(getbasecontext(), mainactivity.class)); // //                return true; //            } // //            @override //            public boolean onsuggestionselect(int position) { //                // code here ////                toast.maketext(getbasecontext(), " on suggestion select position is" + position, toast.length_long).show(); // //                startactivity(new intent(getbasecontext(), mainactivity.class)); // //                return true; //            } //        }); // //        search.setonquerytextlistener(new searchview.onquerytextlistener() { // // //            @override //            public boolean onquerytextsubmit(string query) { //                startactivity(new intent(getbasecontext(), mainactivity.class)); // //                return false; //            } // //            @override //            public boolean onquerytextchange(string newtext) { //                // //                dailyquranmethods.populateadapter(newtext,getapplicationcontext()); // //                return false; //            } // // //        }); // // // //    }       public void populateadapter(string query, context context, simplecursoradapter madapter) {         string[] suggestions = getquranverses(context);         final matrixcursor c = new matrixcursor(new string[]{basecolumns._id, "cityname"});         int j = 0;         int k = 0;         if (query.length() > 3) {             k = getrandom(0, 60); //            toast.maketext(getapplicationcontext(),"k " + k,toast.length_long).show();             (int = 0; < 6144; i++) {                  if (suggestions[i].tolowercase().contains(query.tolowercase()) && suggestions[i].length() > 0) {                     c.addrow(new object[]{i, suggestions[i]});                     j++;                      if (j > 100) {                         break;                     }                 }             }             if (j == 0) {                 c.addrow(new object[]{0, "no results found."});             }         } else {             c.addrow(new object[]{0, "please enter @ least 3 characters."});             c.addrow(new object[]{1, "please patient, have find in more 6,000 verses"});         }           madapter.changecursor(c);     }  } 

calling getactivity() fine, resolve context. don't need full getactivity().getapplicationcontext(). may cause problem since you're telling android use context of application instead of current activity. someday you'll appreciate this.

besides that, need create instance of dailyquranmethods. in java, need create new unless object static. remember.

code sample:

public todayverse() {     dailyquranmethods dailyquranmethods = new dailyquranmethods(); } 

good luck android java...


Comments

Popular posts from this blog

PHP DOM loadHTML() method unusual warning -

python - How to create jsonb index using GIN on SQLAlchemy? -

c# - TransactionScope not rolling back although no complete() is called -