Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 一次性填写编辑文本_Android_Android Edittext - Fatal编程技术网

Android 一次性填写编辑文本

Android 一次性填写编辑文本,android,android-edittext,Android,Android Edittext,我有3个maxlength=1的编辑文本,我想按顺序填写。 也就是说,用户同时键入3个字符,然后将填充3个编辑文本。 想法是将这3个editText放入ArrayList&用户在单独的ArrayList中输入的内容 当用户选择EditText时,将调用其TextWatcher的后文本更改&然后将字符插入arraylist 然后,将在字符列表的大小上声明一个循环,对于arraylist中的每个元素,将拾取并填充相应的edittext 比如: private TextWatcher myTextC

我有3个maxlength=1的编辑文本,我想按顺序填写。 也就是说,用户同时键入3个字符,然后将填充3个编辑文本。 想法是将这3个editText放入
ArrayList
&用户在单独的ArrayList中输入的内容

当用户选择EditText时,将调用其
TextWatcher的后文本更改
&然后将字符插入arraylist

然后,将在字符列表的大小上声明一个循环,对于arraylist中的每个元素,将拾取并填充相应的edittext

比如:

 private TextWatcher myTextChangeListener = new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // 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 editable) {
            EditText editText = null;
            if (mCharList.size() < 3) {
                mCharList.add(editable.toString());
            }
            if (mCharList.size() > 0) {
                for (int index = 0; index < mCharList.size(); index++) {
                    editText = myETList.get(index);
                    editText.setText(mCharList.get(index));
                }
            }
        }
    };
私有TextWatcher myTextChangeListener=new TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
//TODO自动生成的方法存根
}
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
//TODO自动生成的方法存根
}
@凌驾
public void PostTextChanged(可编辑){
EditText EditText=null;
如果(mCharList.size()<3){
添加(可编辑的.toString());
}
如果(mCharList.size()>0){
对于(int index=0;index
但是只要
editText.setText(mCharList.get(index))被调用后extChanged()被再次调用&无限循环开始,引发StackOverFlow异常

还有,我应该如何处理删除/退格键事件。

尝试使用

       @Override
    public void onFocusChange(View v, boolean hasFocus) {

     if (mCharList.size() < 3) {
            mCharList.add(editable.toString());
        }
        if (mCharList.size() > 0) {
            for (int index = 0; index < mCharList.size(); index++) {
                editText = myETList.get(index);
                editText.setText(mCharList.get(index));
            }
        }

    }
@覆盖
public void onFocusChange(视图v,布尔hasFocus){
如果(mCharList.size()<3){
添加(可编辑的.toString());
}
如果(mCharList.size()>0){
对于(int index=0;index
您可以通过以下方式扩展类EditText:

//Declaration
   private class GenericTextWatcher implements TextWatcher{

    private View view;
       private GenericTextWatcher(View view) {
           this.view = view;
       }

       public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
       public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}

       public void afterTextChanged(Editable editable) {
            String text = editable.toString();
            switch(view.getId()){
                case R.id.name:
                    model.setName(text);
                    break;
                case R.id.email:
                    model.setEmail(text);
                    break;
                case R.id.phone:
                    model.setPhone(text);
                    break;
            }
        }
    }
如果你知道是谁写的,你可以避免它工作并停止你的循环