Ich habe eine App mit einer Aktivität. Diese Aktivität hat ein EditText
Feld. Dieses Feld wird mit dem Namen des Benutzers auf der Aktivitätsmethode onStart()
EditText: Benutzereingangsänderung im Vergleich zu Lastdatenänderung erkennen
geladen Jetzt kann der Benutzer seinen Namen bearbeiten und zur nächsten Aktivität navigieren. Ich möchte feststellen, ob der Benutzer tatsächlich Änderungen vorgenommen hat oder ihn nicht aufgefordert hat, seine Änderungen zu speichern.
Also zum Beispiel ist der Benutzername "Sam Jones" und er bearbeitet es nicht, ich möchte ihn nicht zum Speichern auffordern. Aber wenn er es nur zu "Sam" ändert, möchte ich ihn auffordern.
Also fügte ich ein TextWatcher
zu diesem EditText
Feld hinzu. Ich habe ein boolesches Flag 'MADE_CHANGES' erstellt und ändere dieses Flag wie folgt.
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
MADE_CHANGES = true;
}
@Override
public void afterTextChanged(Editable editable) {
}
Jedoch ist dieses Verfahren wird auch durch die onStart
Methode der Aktivität genannt. Verständlicherweise, da die EditText
von einem leeren Feld zu "Sam Jones" geändert wird. Daher wird meine Eingabeaufforderung "Speichern" angezeigt, auch wenn der Benutzer keine Änderungen an seinem Namen vorgenommen hat.
Gibt es eine elegante Lösung, um zu überprüfen, ob der EditText vom Benutzer geändert wurde, während das erste erstmalige Datenladeereignis ausgeschlossen wurde, das von onStart
ausgelöst wurde?