2017-07-09 2 views
0

Ich habe 9 Edittext meine Frage ist, wenn Sie eine Zahl in einem Editiertext eingeben Ich kann nicht eine andere Nummer in den anderen 8 Edittext verbleibenden Geben Sie zum Beispiel, wenn ich 5 in editext und 1 eingeben, wenn ich ein anderes eingeben möchte 5 in den 8 Edittext-Restants legt nichts ein und eine Fehlermeldung wird angezeigt.Edittext und Fehlermeldung

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

    } 
} 
+1

Welche ist die Fehlermeldung? Hast du einen Stack-Trace? – Juan

+0

Willkommen bei Stack Overflow! Bitte nehmen Sie die [Tour] (https://Stackoverflow.com/tour), schauen Sie sich um, und lesen Sie durch die [Hilfe-Center] (https://stackoverflow.com/help), insbesondere [wie stelle ich eine gute Frage?] (https://stackoverflow.com/help/how-to-ask) und [Was kann ich hier fragen?] (https://stackoverflow.com/help/on- Thema). –

Antwort

0

Sie können den Text im Bearbeitungstext in einem Array speichern. Bei jeder Textänderung können Sie überprüfen, ob ein Konflikt vorliegt. Wenn ja, zeige einen Toast an. Aktualisieren Sie die textInput-Strings entsprechend. Ich bin mir nicht sicher, ob der Code funktioniert, hoffe aber, dass Sie auf die Idee kommen.

ein Scheck Array deklarieren

String[] textInputs = new String[9]; 

Überprüfen der Eingang mit den anderen Eingängen

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()); in jede OnTextChanged (add).

fügen Sie in jedem afterTextChanged() updateInputs(0,e.toString()); hinzu.

0

Verwendung dieses

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); 


      } 
     }); 
    } 

} 
+0

Vielen Dank ... es funktioniert – azed