android - Refreshing a fragment View on back from settings change -


what i'm trying accomplish have view refresh when comes settings , changes preference. thought work not. ideas on how can accomplish this?

    import java.text.simpledateformat;     import java.util.calendar;     import com.projectcaruso.naturalfamilyplanning.r;     import android.annotation.suppresslint;     import android.app.datepickerdialog.ondatesetlistener;     import android.content.sharedpreferences;     import android.os.bundle;     import android.preference.preferencemanager;     import android.support.v4.app.fragment;     import android.view.layoutinflater;     import android.view.view;     import android.view.viewgroup;     import android.widget.datepicker;     import android.widget.textview;      public class chartingfragment extends fragment implements ondatesetlistener {         sharedpreferences mpreferences;         boolean symptothermal;         boolean mucus_stamps;         boolean fertile_infertile;          @override         public void ondateset(datepicker view, int year, int monthofyear, int dayofmonth) {             // todo auto-generated method stub         }              public void showdatepickerdialog(view v) {             datepickerfragment newfragment = new datepickerfragment();             newfragment.show(getchildfragmentmanager(), "datepicker");         }          @override         public void oncreate(bundle savedinstancestate) {             super.oncreate(savedinstancestate);             init();         }                     private void init() {             mpreferences = preferencemanager.getdefaultsharedpreferences(getactivity());             symptothermal = mpreferences.getboolean("symptothermal", true);             mucus_stamps = mpreferences.getboolean("mucus_stamps", true);             fertile_infertile = mpreferences.getboolean("fertile_infertil", true);         }          @suppresslint("simpledateformat")         @override         public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {             view view;              view = setcontrolvisability(inflater);              return view;            }          @override         public void onresume() {                super.onresume();                view vg = getview().findviewbyid(r.id.charting);               vg.invalidate();               init();          }          private view setcontrolvisability(layoutinflater inflater) {             // todo auto-generated method stub             view view = inflater.inflate(r.layout.fragment_charting, null);             textview temp;             if (!symptothermal) {                     temp = (textview) view.findviewbyid(r.id.temp);                     temp.setvisibility(view.gone);                     temp = (textview) view.findviewbyid(r.id.tempvalue);                     temp.setvisibility(view.gone);                 }              if (!mucus_stamps) {                 temp = (textview) view.findviewbyid(r.id.stamp);                 temp.setvisibility(view.gone);                 temp = (textview) view.findviewbyid(r.id.stampvalue);                 temp.setvisibility(view.gone);             }              if (!fertile_infertile) {                 temp = (textview) view.findviewbyid(r.id.fertile);                 temp.setvisibility(view.gone);                 temp = (textview) view.findviewbyid(r.id.fertileswitch);                 temp.setvisibility(view.gone);             }              temp  = (textview) view.findviewbyid(r.id.dateselected);             simpledateformat dfdate_day= new simpledateformat("mm/dd/yyyy");             string dt="";             calendar c = calendar.getinstance();              dt=dfdate_day.format(c.gettime());             temp.settext(dt);              return view;         }       } 

i'd suggest use startactivityforresult , pass bundle if sub-activity (fragmentactivity) has been changed.

1) activity start preference activity:

intent intent = new intent(this, preferenceactivity.class); if (!this.isfinishing()) startactivityforresult(intent, request_update); 

2) override onactivityresult

@override protected void onactivityresult(int reqcode, int rescode, intent data) {     super.onactivityresult(reqcode, rescode, data);     log.d(tag, "received result: " + reqcode + " / " + rescode); } 

3) in subactivity (preferenceactivity) monitor keys have been changed , pass bundle if like

public class prefsfragment extends preferencefragment implements onsharedpreferencechangelistener,     onpreferencechangelistener {      @override     public void oncreate(bundle savedinstancestate) {        super.oncreate(savedinstancestate);         // load preferences xml resource        addpreferencesfromresource(r.xml.preferences);     }      @override     public boolean onpreferencechange(preference arg0, object arg1) {         getparent().setresult(mainactivity.result_preferences_changed); // constant     }  @override public void onresume() {     super.onresume();     getpreferencemanager().getsharedpreferences().registeronsharedpreferencechangelistener(this); }  @override public void onpause() { getpreferencemanager().getsharedpreferences().unregisteronsharedpreferencechangelistener(this);     super.onpause(); } } 

Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -