Focus Goto On Next Box After Enter Character In First Box
I have to implement an application in which I have set small edittext for input PIN number and Mobile Number. Each edit text contain 1 character at a time.Now when I run this app,
Solution 1:
1. implements TextWatcher on EditTexts
and then when you get Edittext's text length is 1.
2. Change focus on other EditText usingCall requestFocus() on the other EditText..
CODE: (This code is for your understanding, It may be different on your case and your need)
publicclassLoginActivityextendsActivityimplementsTextWatcher
{
.
.
.
editTextUName = (EditText) findViewById(R.id.edttextusername);
editTextUName.addTextChangedListener(this);
editTextPwd = (EditText) findViewById(R.id.edttextpassword);
editTextPwd.addTextChangedListener(this);
@OverridepublicvoidafterTextChanged(Editable s)
{
if (s.toString().length() == 1)
{
editTextPwd.requestFocus();
}
}
Solution 2:
Use this Code
finalEditTextEditText01= (EditText) findViewById(R.id.editText01);
final EditText EditText02= (EditText) findViewById(R.id.editText02);
finalEditTextEditText03= (EditText) findViewById(R.id.editText03);
finalEditTextEditText04= (EditText) findViewById(R.id.editText04);
EditText01.requestFocus();
EditText01.setOnFocusChangeListener(newView.OnFocusChangeListener() {
@OverridepublicvoidonFocusChange(final View v,
finalboolean hasFocus) {
if (hasFocus) {
finalInputMethodManagermgr= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is// open
mgr.showSoftInput(EditText01,
InputMethodManager.SHOW_IMPLICIT);
}
}
});
EditText01.setOnKeyListener(newView.OnKeyListener() {
@OverridepublicbooleanonKey(final View v, finalint keyCode,
final KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
EditText01.requestFocus();
} else {
EditText02.requestFocus();
}
}
returnfalse;
}
});
EditText02.setOnKeyListener(newView.OnKeyListener() {
@OverridepublicbooleanonKey(final View v, finalint keyCode,
final KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
EditText01.requestFocus();
} else {
EditText03.requestFocus();
}
}
returnfalse;
}
});
EditText03.setOnKeyListener(newView.OnKeyListener() {
@OverridepublicbooleanonKey(final View v, finalint keyCode,
final KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
EditText02.requestFocus();
} else {
EditText04.requestFocus();
}
}
returnfalse;
}
});
EditText04.setOnKeyListener(newView.OnKeyListener() {
@OverridepublicbooleanonKey(final View v, finalint keyCode,
final KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
EditText03.requestFocus();
}
}
returnfalse;
}
});
Solution 3:
Add a text change listener
textView1.addTextChangedListener(new TextWatcher() {
publicvoidafterTextChanged(Editable s) {
textView2.requestFocus();
}
publicvoidbeforeTextChanged(CharSequence s, int start, int count, int after) {
}
publicvoidonTextChanged(CharSequence s, int start, int before, int count) {
}
});
Solution 4:
This should work fine. mPinFirst and so on are the EditTexts representing each Pin entry. Should also take care of backspacing.
mPinFirst.setOnKeyListener(onKeyListener);
mPinSecond.setOnKeyListener(onKeyListener);
mPinThird.setOnKeyListener(onKeyListener);
mPinFourth.setOnKeyListener(onKeyListener);
View.OnKeyListeneronKeyListener=newView.OnKeyListener() {
@OverridepublicbooleanonKey(View view, int i, KeyEvent keyEvent) {
if(KeyEvent.KEYCODE_DEL != keyEvent.getKeyCode()) {
if (((ESEditText) view).getText().length() == 1)
if (view.focusSearch(View.FOCUS_RIGHT) != null) {
view.focusSearch(View.FOCUS_RIGHT).requestFocus();
returntrue;
}
}else{
((ESEditText) view).setText("");
if (view.focusSearch(View.FOCUS_LEFT) != null) {
view.focusSearch(View.FOCUS_LEFT).requestFocus();
returntrue;
}
}
returnfalse;
}
};
Post a Comment for "Focus Goto On Next Box After Enter Character In First Box"