Android 编辑文本和错误消息

Android 编辑文本和错误消息,android,android-edittext,Android,Android Edittext,我有9个edittext我的问题是当你在edittext中键入一个数字时,我不能在剩下的8个edittext中键入另一个数字。例如,如果我在edittext中键入5,如果我想在8个edittext中键入另一个5,则重新启动时不会放入任何内容,并将显示错误消息 et1.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence

我有9个edittext我的问题是当你在edittext中键入一个数字时,我不能在剩下的8个edittext中键入另一个数字。例如,如果我在edittext中键入5,如果我想在8个edittext中键入另一个5,则重新启动时不会放入任何内容,并将显示错误消息

    et1.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {

            tester();
        }
    });
    et2.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {

        }

        @Override
        public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {

        }

        @Override
        public void afterTextChanged(final Editable s) {
            tester();

        }

    });
    et3.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {

        }

        @Override
        public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {

        }

        @Override
        public void afterTextChanged(final Editable s) {
            tester1();

        }

    });
    et4.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {

        }

        @Override
        public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {

        }

        @Override
        public void afterTextChanged(final Editable s) {

        }

    });
    et5.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {

        }

        @Override
        public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {

        }

        @Override
        public void afterTextChanged(final Editable s) {

        }
    });

    et6.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {

        }

        @Override
        public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {

        }

        @Override
        public void afterTextChanged(final Editable s) {

        }
    });
    et7.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {

        }

        @Override
        public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {

        }

        @Override
        public void afterTextChanged(final Editable s) {

        }
    });
    et8.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {

        }

        @Override
        public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {

        }

        @Override
        public void afterTextChanged(final Editable s) {
            tester();

        }
    });
    et9.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {

        }

        @Override
        public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {

        }

        @Override
        public void afterTextChanged(final Editable s) {

        }
    })
protected void tester()

{
    if (et1.getText().toString().equals(et2.getText().toString()) ||
            et1.getText().toString().equals(et3.getText().toString()) ||
            et1.getText().toString().equals(et4.getText().toString()) ||
            et1.getText().toString().equals(et5.getText().toString()) ||
            et1.getText().toString().equals(et6.getText().toString()) ||
            et1.getText().toString().equals(et7.getText().toString()) ||
            et1.getText().toString().equals(et8.getText().toString()) ||
            et1.getText().toString().equals(et9.getText().toString())) {
        Toast.makeText(this, "vous ne devez utiliser ce nombre deux fois ", Toast.LENGTH_SHORT).show();

    }
}

可以将编辑文本中的文本存储到数组中。每次文本更改时,您都可以检查是否存在冲突。如果是,敬酒。相应地更新文本输入字符串。不确定代码是否有效,但希望您能理解

声明一个检查数组

String[] textInputs = new String[9];
用其他输入检查输入

void checkTextValid(String input){
   if (input.length > 0 && ArrayUtils.contains( textInputs, input ) ) {
       Toast.makeText(this, "vous ne devez utiliser ce nombre deux fois ", Toast.LENGTH_SHORT).show();
   }
}

void updateInputs(int id, String s){
    textInputs[id] = s;
}
添加
checkTextValid(s.toString())编码到每个onTextChanged()中

添加
updateInputs(0,例如toString())编码到每个PostTextChanged()中。

使用此

public class MainActivity extends AppCompatActivity {


    EditText edt_1,edt_2,edt_3,edt_4,edt_5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edt_1 = (EditText)findViewById(R.id.edt_1);
        edt_2 = (EditText)findViewById(R.id.edt_2);
        edt_3 = (EditText)findViewById(R.id.edt_3);
        edt_4 = (EditText)findViewById(R.id.edt_4);
        edt_5 = (EditText)findViewById(R.id.edt_5);


        editTextWatcher(edt_1);
        editTextWatcher(edt_2);
        editTextWatcher(edt_3);
        editTextWatcher(edt_4);
        editTextWatcher(edt_5);
    }




    public void editTextWatcher(final EditText edt) {
        edt.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {


            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {

                edt.removeTextChangedListener(this);
                edt.setText("");
                edt.addTextChangedListener(this);

                ArrayList<String> texts = new ArrayList<String>();
                texts.add(edt_1.getText().toString());
                texts.add(edt_2.getText().toString());
                texts.add(edt_3.getText().toString());
                texts.add(edt_4.getText().toString());
                texts.add(edt_5.getText().toString());

                for (String text : texts){
                    if(s.toString().equals(text)){
                        Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show();
                        edt.removeTextChangedListener(this);
                        edt.setText("");
                        edt.addTextChangedListener(this);
                        return;
                    }
                }

                edt.removeTextChangedListener(this);
                edt.setText(s.toString());
                edt.addTextChangedListener(this);


            }
        });
    }

}
public类MainActivity扩展了AppCompatActivity{
编辑文本edt_1、edt_2、edt_3、edt_4、edt_5;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edt_1=(EditText)findViewById(R.id.edt_1);
edt_2=(EditText)findViewById(R.id.edt_2);
edt_3=(EditText)findViewById(R.id.edt_3);
edt_4=(EditText)findViewById(R.id.edt_4);
edt_5=(EditText)findViewById(R.id.edt_5);
editTextWatcher(edt_1);
editTextWatcher(edt_2);
editTextWatcher(edt_3);
editTextWatcher(edt_4);
editTextWatcher(edt_5);
}
公共无效editTextWatcher(最终EditText edt){
edt.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
}
@凌驾
公共无效后文本已更改(可编辑){
edt.移除ExtChangedListener(此);
edt.setText(“”);
edt.addTextChangedListener(此);
ArrayList text=新的ArrayList();
text.add(edt_1.getText().toString());
text.add(edt_2.getText().toString());
text.add(edt_3.getText().toString());
text.add(edt_4.getText().toString());
text.add(edt_5.getText().toString());
用于(字符串文本:文本){
如果(s.toString().equals(文本)){
Toast.makeText(MainActivity.this,“Error”,Toast.LENGTH_SHORT.show();
edt.移除ExtChangedListener(此);
edt.setText(“”);
edt.addTextChangedListener(此);
返回;
}
}
edt.移除ExtChangedListener(此);
edt.setText(s.toString());
edt.addTextChangedListener(此);
}
});
}
}

哪个是错误消息?你有堆栈跟踪吗?欢迎来到堆栈溢出!请带上,四处看看,并通读,尤其是和。