Edit Text Is not taking input at first Click in android
I am creating an application in which i want that user can enter the IP address at run time. In which i designed 4 edit Text where user can enter the IP address. I Created the XML for it. Now i created a custom class which extends TextWatcher to set addTextChangedListener for the EditText.
ipSlotFirst=(EditText)ipSettings.findViewById(R.id.ip_slot1);
ipSlotFirst.setFilters(FilterArray);
CustomOnTextChangeListener slot1=new CustomOnTextChangeListener(ipSlotFirst);
ipSlotFirst.addTextChangedListener(slot1);
ipSlotSecond=(EditText)ipSettings.findViewById(R.id.ip_slot2);
ipSlotSecond.setFilters(FilterArray);
CustomOnTextChangeListener slot2=new CustomOnTextChangeListener(ipSlotSecond);
ipSlotSecond.addTextChangedListener(slot2);
ipSlotThird=(EditText)ipSettings.findViewById(R.id.ip_slot3);
ipSlotThird.setFilters(FilterArray);
CustomOnTextChangeListener slot3=new CustomOnTextChangeListener(ipSlotThird);
ipSlotThird.addTextChangedListener(slot3);
ipSlotFourth=(EditText)ipSettings.findViewById(R.id.ip_slot4);
ipSlotFourth.setFilters(FilterArray);
CustomOnTextChangeListener slot4=new CustomOnTextChangeListener(ipSlotFourth);
ipSlotFourth.addTextChangedListener(slot4);
Now i want when user enter three digit in one EditText it will automatically shift to the next Edit Text and when user deleting the content of the editText and focus shift to the previous Edit Text once the content of the Edit Text become empty.And i did it with a customOnTextChangeListener class.
class CustomOnTextChangeListener implements TextWatcher{
/** The m focused view. */
EditText mFocusedView;
/**
* Instantiates a new custom on text change listener.
*
* @param pFocusedView the focused view
*/
public CustomOnTextChangeListener(EditText pFocusedView){
mFocusedView = pFocusedView;
}
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if(mFocusedView.equals(ipSlotFirst)){
if(s.length()>=3){
ipSlotSecond.requestFocus();
}
}else if(mFocusedView.equals(ipSlotSecond)){
if(s.length()>=3){
ipSlotThird.requestFocus();
}else if(s.length()==0){
ipSlotFirst.requestFocus();
}
}
else if(mFocusedView.equals(ipSlotThird)){
if(s.length()>=3){
ipSlotFourth.requestFocus();
}else if(s.length()==0){
ipSlotSecond.requestFocus();
}
}else if(mFocusedView.equals(ipSlotFourth)){
if(s.length()>=3){
port开发者_StackOverflow社区Number.requestFocus();
}else if(s.length()==0){
ipSlotThird.requestFocus();
}
}
}
}
Everything is working fine. But I am facing a problem when i entered the ip like this 192 in first Edit Text then it shift automatically to second Edit Text and then i entered 10 then click on third Edit Text then click on a Number then first time Edit Text is not taking the Input.
Kindly Help In this regards.
Best Regards
Deepak Goel
if(mFocusedView.equals(ipSlotFirst)){
if(s.length()>3){
ipSlotSecond.requestFocus();
}
add the above instead of
if(mFocusedView.equals(ipSlotFirst)){
if(s.length()>=3){
ipSlotSecond.requestFocus();
}
精彩评论