开发者

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();
        }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜