android - Handler not updating ActionBar title -


i writing code music player , seems working fine except actionbar. when song playing, thread probes service every second change in song , if there change in song, handler object changes ui elements.

final handler uihandler = new handler() {     @override     public void handlemessage(message msg) {         bundle data = msg.getdata();         song = data.getparcelable("song_info");         songtext.settext(song.getsongtitle());         artisttext.settext(song.getsongartist());         seekbar.setmax(mservice.getduration()/1000); //all these work         assert getsupportactionbar() != null;         getsupportactionbar().settitle(mservice.getsongname()); //not updating         super.handlemessage(msg);     } }; 

what when there message thread, updates ui. can confirm works , invoked when need to. text views , seekbar updated required. however, getsupportactionbar().settitle(...) doesn't update title bar.
same method of setting action bar title works if in other methods of same class. missing here?
in advance!

update:
here's more code activity has, in case helps strike something.

 private serviceconnection mconnection = new serviceconnection() {             @override             public void onserviceconnected(componentname componentname, ibinder ibinder) {                 musicservice.musicbinder mbinder = (musicservice.musicbinder)ibinder;                 mservice = mbinder.getservice();                 pausebtn = (imagebutton)findviewbyid(r.id.pause);                 seekbar.setmax(mservice.getduration()/1000);                 counterthread cthread = new counterthread();                 thread counter = new thread(cthread);                 counter.start();                 if(mservice.ispaused()) {                     pausebtn.setimageresource(r.drawable.ic_play_arrow_white_36dp);                 }                 else {                     pausebtn.setimageresource(r.drawable.ic_pause_white_36dp);                 }             }              @override             public void onservicedisconnected(componentname componentname) {             }         };          private class counterthread implements runnable {             @override             public void run() {                 while(true) {                     try {                         if(!mservice.getsongname().equals(song.getsongtitle())) //this invoked when there change in song.{                             message msg = uihandler.obtainmessage();                             bundle b = new bundle();                             b.putparcelable("song_info", mservice.getsong());                             msg.setdata(b); //i receive message in handler                             uihandler.sendmessage(msg);                         }                         seekbar.setprogress(mservice.getcurrposn()/1000);                         thread.sleep(1000);                     } catch (exception e){                         e.printstacktrace();                     }                 }             }         } @override     protected void oncreate(@nullable bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.song_playing);         song = getintent().getparcelableextra("song_info");         songtext = (textview) findviewbyid(r.id.songname);         artisttext = (textview) findviewbyid(r.id.artistname);         songtext.settext(song.getsongtitle());         artisttext.settext(song.getsongartist());         header = getsupportactionbar();         seekbar = (seekbar)findviewbyid(r.id.seekbar);          seekbar.setonseekbarchangelistener(new seekbar.onseekbarchangelistener() {             @override             public void onprogresschanged(seekbar seekbar, int i, boolean b) {                 // nothing             }              @override             public void onstarttrackingtouch(seekbar seekbar) {                 // nothing             }              @override             public void onstoptrackingtouch(seekbar seekbar) {                 int progress = seekbar.getprogress();                 mservice.seek(progress*1000);             }         });          assert header != null;         header.setdisplayoptions(actionbar.display_show_custom);         header.setcustomview(r.layout.head_layout);         titletext = (textview) findviewbyid(r.id.titletext);         titletext.settext(song.getsongtitle());      } /*  more operations */ public void next(view v) {         mservice.nextsong();         pausebtn.setimageresource(r.drawable.ic_pause_white_36dp);          assert header != null;         header.settitle(mservice.getsongname());  // works fine          songtext.settext(mservice.getsongname());         artisttext.settext(mservice.getartistname());         titletext.settext(mservice.getsongname());         seekbar.setmax(mservice.getduration()/1000);     } 

don't mind slight indentation offset.


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -