Android 编辑文本和错误消息
我有9个edittext我的问题是当你在edittext中键入一个数字时,我不能在剩下的8个edittext中键入另一个数字。例如,如果我在edittext中键入5,如果我想在8个edittext中键入另一个5,则重新启动时不会放入任何内容,并将显示错误消息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
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(此);
}
});
}
}
哪个是错误消息?你有堆栈跟踪吗?欢迎来到堆栈溢出!请带上,四处看看,并通读,尤其是和。