将焦点转移到android中的下一个小部件

时间:2015-03-23 06:53:24

标签: android android-edittext focus

我有一些动态生成的EditText。我想在达到所需长度后将焦点更改为下一个EditText。我已将所有编辑文本放在ArrayList上,并尝试添加一个事件,将焦点转移到下一个,但似乎没有任何工作。 我无法通过id调用editText字段,因为它们是动态生成的。

    final ArrayList<EditText> myEt = new ArrayList<EditText>();

    for(int a = 0; a < g2.getChildCount(); a++){//g2 is parent layout

        if(g2.getChildAt(a) instanceof EditText);
        myEt.add((EditText) g2.getChildAt(a));

    }

    for(int b =0; b>myEt.size()-1; ++b){
         final EditText e;
         final EditText e1;
        e = (EditText) myEt.get(b);
        e1 = (EditText) myEt.get(b+1);
        e.setOnKeyListener(new View.OnKeyListener() {

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if(e.getText().toString().length() > 4){
                    e.clearFocus();
                    e1.requestFocus();
                }


                return false;
            }
        });

    }

1 个答案:

答案 0 :(得分:0)

<强>更新

editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
       if(s.length()==Your required length)
           {
               input2.requestFocus();
           }

            // TODO Auto-generated method stub
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable s) {

            if(s.length()==Your required length)
           {
               input2.requestFocus();
           }
        }
    });