EditText.setText does not work when a Handler call the function of Activity -
i trying change content of edittext using handler.
i have defined own application class, named myapp. own activity, named myactivity. own handler, named myhandler.
it callback method in myapp determine when change content of edittext within myactivity. myhandler handles message myapp, , calls setmessage function, defined in myactivity, change content of edittext.
here code. when application running first time, fine. quit application , reopen it, when setmessage function called, toast shown, while messages(edittext) empty. seems messages.settext doesn't work. id of messages(edittext) 1 when application running first time. , message(string) not empty.
myapp:
public class myapp extends application { private myhandler handler; @override public void oncreate() { super.oncreate(); handler = new myhandler(); init(); } public myhandler gethandler() { return handler; } ... public class mycallback extends othercallback { ... @override public void onreceivemessage(string content, string alias, string topic) { message message = handler.obtainmessage(r.id.receive, content); message.sendtotarget(); } ... } } myhandler:
public class myhandler extends handler { private myactivity myactivity; @override public void handlemessage(message msg) { switch (msg.what) { case r.id.receive: if (myactivity != null) { myactivity.setmessage((string) msg.obj); } break; case r.id.register: ... break; default: super.handlemessage(msg); break; } } public void setactivity(myactivity activity) { if (myactivity == null) { this.myactivity = activity; } } } myactivity:
public class myactivity extends activity { private edittext messages; myapp app; myhandler handler; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); messages = (edittext) findviewbyid(r.id.messages); app = (myapp) getapplication(); handler = app.gethandler(); handler.setactivity(this); } public void setmessage(string message) { messages.settext(message); toast.maketext(this, message, toast.length_long).show(); } }
Comments
Post a Comment