android - Custom inline SeekBarPreference - how to set SeekBar progress on the 1st run? -


i have prepared a simple test project question @ github.

in project there custom inline seekbarpreference, works fine (its summary updated when seekbar being dragged , saves integer value):

app screenshot

however there problem:

on 1st run of app (you might need uninstall app when try see error again) progress of seekbar not set (but summaries set):

app screenshot

my question is: how fix issue in code?

i have tried adding mseekbar.setprogress(mprogress) in different spots of seekbarpreference.java, can't find correct place code.

below excerpts source code (in case stackoverflow ever outlives github) -

mainactivity.java:

preferencemanager.setdefaultvalues(this, r.xml.preferences, false);  getfragmentmanager().begintransaction()     .addtobackstack(null)     .replace(r.id.root, new preffragment(), "prefs")     .commit(); 

preffragment.java:

@override public void onresume() {     super.onresume();      sharedpreferences prefs = getpreferencemanager().getsharedpreferences();     // set summaries saved values     onsharedpreferencechanged(prefs, seek_1);     onsharedpreferencechanged(prefs, seek_2);     prefs.registeronsharedpreferencechangelistener(this); }  @override public void onsharedpreferencechanged(sharedpreferences prefs, string key) {      if (seek_1.equals(key)) {         int i1 = prefs.getint(key, default_1);         mseek1.setsummary("$ " + i1);     } else if (seek_2.equals(key)) {         int i2 = prefs.getint(key, default_2);         mseek2.setsummary("$ " + i2);     }        }   

seekbarpreference.java (the complete source code):

public class seekbarpreference extends preference implements onseekbarchangelistener {      private seekbar mseekbar; // fixme how set progress?     private int mprogress;      public seekbarpreference(context context, attributeset attrs) {         super(context, attrs);     }      @override     protected view oncreateview(viewgroup parent) {         layoutinflater inflater = (layoutinflater) getcontext().getsystemservice(context.layout_inflater_service);         view view = inflater.inflate(r.layout.preference_seekbar, parent, false);         // can done in onbindview, not work either         mseekbar = (seekbar) view.findviewbyid(r.id.seekbar);         mseekbar.setprogress(mprogress);         mseekbar.setonseekbarchangelistener(this);         return view;     }      @override     public void onprogresschanged(seekbar seekbar, int progress, boolean fromuser) {         if (!fromuser)             return;          setvalue(progress);     }      @override     public void onstarttrackingtouch(seekbar seekbar) {         // not used     }      @override     public void onstoptrackingtouch(seekbar seekbar) {         // not used     }      @override     protected void onsetinitialvalue(boolean restorevalue, object defaultvalue) {         setvalue(restorevalue ? getpersistedint(mprogress) : (integer) defaultvalue);     }      public void setvalue(int value) {         if (shouldpersist()) {             persistint(value);         }          if (value != mprogress) {             mprogress = value;             notifychanged();         }     } } 

update:

what have unsuccessfully tried sofar -

1) adding following lines oncreateview() method:

    int progress = getpersistedint(mprogress); // shows 0 in debugger     mseekbar.setprogress(progress); 

2) adding following lines setvalue() method:

    if (value != mprogress) {         mprogress = value;         mseekbar.setprogress(mprogress);         notifychanged();     } 

alas not work, progress of mseekbar stays @ 0.

also, there seekbarpreference google - don't understand how works there (or if works @ all).

you need override ongetdefaultvalue in seekbarpreference.

try this:

@override protected object ongetdefaultvalue(typedarray a, int index) {     return a.getint(index, 0); } 

Comments

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -