save - Android- saving data that updates before restarting the application -


in android application i'm working on, have 1 activity user inputs data saved using sharedpreferences, , used calculations on main activity. issue i'm having after saving data, changes not take effect until after application restarted. there way can make variables associated these sharedpreferences updated before restarting?

here save data in separate activity.

     savebn.setonclicklistener(new view.onclicklistener() {           @override         public void onclick(view v) {              weightstring = weighttext.gettext().tostring();             agestring = agetext.gettext().tostring();              getsharedpreferences("preference", mode_private).edit()             .putstring("savedweight", weightstring).commit();             getsharedpreferences("preference", mode_private).edit()             .putstring("savedage", agestring).commit();              //intent = new intent("com.williammiller.capstonelapv2.mainactivity");             //startactivity(i);                  finish();         }     }); 

and here i'm checking in main activity see are

    string age = getsharedpreferences("preference", mode_private)             .getstring("savedage", "25");     string weight = getsharedpreferences("preference", mode_private)             .getstring("savedweight", "200");      startbn.setonclicklistener(new view.onclicklistener() {           @override         public void onclick(view v) {                    toast.maketext(getapplicationcontext(), "weight = " + weightint + " age = " + ageint, toast.length_long).show();              }     }); 

you can use broadcastreceiver achieve that. following:

  1. register broadcastreceiver in main activity:
public static final string update_action = "yourpackage.update"; public static final string extra_key_age = "key_age"; public static final string extra_key_weight = "key_weight"; private broadcastreceiver mreceiver;      // in oncreate() method mreceiver = new broadcastreceiver(){             @override           public void onreceive(context context, intent intent) {                 if(intent.getaction().equals(update_action)){                     // here update data activity                     string age = intent.getstringextra(extra_key_age);                     string weight = intent.getstringextra(extra_key_weight);                 }             } }; registerreceiver(receiver, new intentfilter(update_action ));  // add following code ondestroy() method unregisterreceiver(mreceiver); 
  1. send broadcast in "separate activity":

     public void onclick(view v) {      weightstring = weighttext.gettext().tostring();      agestring = agetext.gettext().tostring();      intent intent = new intent(mainactivity.update_action );      intent.putextra(mainactivity.extra_key_age, agestring);      intent.putextra(mainactivity.extra_key_weight, weightstring );      sendbroadcast(intent);       } 

update: change part of code unregister broadcastreceiver when activity destroyed.


Comments

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -