textwatcher - number doesn't show in editText field when entered (Android 2.2) -



textwatcher - number doesn't show in editText field when entered (Android 2.2) -

i have 2 edittext fields, next textwatchers in own addtextchangedlisteners. input read , handled correctly number come in not shown on display in sec field (edittext2) (even though wait (sleep() in aftertextchanged()) while before proceeding setting values of both fields null end setting focus first field.

what happens on entering number in first field: number diplayed in field , focus moved sec field. happens on entering number in sec field: cursor (blinking vertical line) frozen, no number shown, after 2 seconds: cursor moved first field , both fields empty. of meant happen except number entered in sec field should show , scheme should frozen showing number while before setting null , moving on first field.

what wrong , how solve?

public class spel extends fragmentactivity { @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.spel); edittext1 = (edittext) findviewbyid(r.id.edittext1); edittext1.addtextchangedlistener(new textwatcher() { @override public void ontextchanged(charsequence s, int start, int before, int count) { if (before==0) { // alleen doen als edittext1 leeg string v = s.tostring(); if (v.equals("0") || v.equals("1") || v.equals("2") || v.equals("3") || v.equals("4") || v.equals("5") || v.equals("6") || v.equals("7") || v.equals("8") || v.equals("9")) { edittext2.requestfocus(); int baanworpscore = integer.parseint(v); banenworpscore[0] = baanworpscore; } else { // blijf wachten op goede invoer edittext1.settext(null); } } } }); edittext2 = (edittext) findviewbyid(r.id.edittext2); edittext2.addtextchangedlistener(new textwatcher() { @override public void aftertextchanged(editable s) { // todo auto-generated method stub seek { thread.sleep(2000); } grab (interruptedexception e) { // todo auto-generated grab block e.printstacktrace(); } } @override public void ontextchanged(charsequence s, int start, int before, int count) { if (before==0) { string v = s.tostring(); if (v.equals("0") || v.equals("1") || v.equals("2") || v.equals("3") || v.equals("4") || v.equals("5") || v.equals("6") || v.equals("7") || v.equals("8") || v.equals("9")) { edittext1.requestfocus(); edittext1.settext(null); edittext2.settext(null); int baanworpscore = integer.parseint(v); banenworpscore[1] = baanworpscore; } else { // blijf wachten op goede invoer edittext2.settext(null); } } }); }

found next solution, putting delayed operations in runnable, passed method postdelayed of (new) handler. wished. refer here post helped me find solution.

(i don't know if method removecallbacks must called)

@override public void ontextchanged(charsequence s, int start, int before, int count) { runnable mfiltertask = new runnable() { @override public void run() { edittext1.settext(null); edittext2.settext(null); edittext1.requestfocus(); } }; handler mhandler = new handler(); if (before==0) { string v = s.tostring(); if (v.equals("0") || v.equals("1") || v.equals("2") || v.equals("3") || v.equals("4") || v.equals("5") || v.equals("6") || v.equals("7") || v.equals("8") || v.equals("9")) { mhandler.removecallbacks(mfiltertask); mhandler.postdelayed(mfiltertask, 2000); int baanworpscore = integer.parseint(v); banenworpscore[1] = baanworpscore; } } }

android-edittext textwatcher

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -