Android: EditText Validierungsfehler anzeigen

Der schlimmste Feind eines Entwicklers ist der unerfahrene und ambitionierte User. Diese Art von User bringt die App / das Programm an ihre / seine Grenzen. Besonders Abweichungen vom Use-Case und willkürliche Benutzereingaben erfordern höchste Konzentration und Vorstellungskraft des Entwicklers. Neben der eigentlichen Validierung der Eingaben ist auch das Benutzerfeedback sehr wichtig. In dem heutigen Beitrag zeige ich euch wie man in einer Android App, meiner Meinung nach, gutes Benutzerfeedback nach einer Validierung gibt.

 

Die Validierung an sich

AVDAutoCompleteTest2An dieser Stelle kann man sich Streiten und es gibt verschiedene Meinungen. Ich bin aber der Meinung, dass man so früh wie möglich dem Benutzer Feedback geben sollte. Nicht bei jeder einzelnen Eingabe sofort, aber pro Wort oder nach dem Verlassen des Feldes zum Beispiel. Das hat den Vorteil, dass man per Auto Complete den Benutzer helfen kann und ggf. auftretende Fehler schnell korrigiert werden können.

Die Kollegen von Java Code Geeks haben dazu ein sehr gutes Tutorial/Howto geschrieben. Das Tutorial/Howto wurde im Januar 2014 veröffentlicht, daher gilt es auch für Android 4.4 Kitekat und Android 5.0 Lollipop.

 

 

Benutzerfeedback

Kommen wir nun zum praktischen Teil! Android bietet schon von Haus aus eine schöne Funktion an, um Validierungsfehler anzuzeigen. Die Funktion heißt „setError“ und ist seit API Version 1 bei jedem EditText dabei. (Siehe Zeile 46, 51 und 56) Sollten mehrere Felder validiert werden, würde ich zusätzlich einen Toast empfehlen. (Siehe Zeile 61)

package de.axxg.validierungsfehler;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class KontaktFragment extends Fragment {
	
	private EditText nameET;
	private EditText mailET;
	private EditText messageET;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		// View holen
		View v = inflater.inflate(R.layout.kontakt_fragment, container, false);

		nameET = (EditText) v.findViewById(R.id.kontakt_name);
		mailET = (EditText) v.findViewById(R.id.kontakt_mail);
		messageET = (EditText) v.findViewById(R.id.kontakt_message);
		
		// Button
		Button sendBtn = (Button) v.findViewById(R.id.kontakt_btn);
		sendBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				sendMail();
			}
		});

		return v;
	}

	private void sendMail() {
		// validieren
		boolean isValid = true; 
		
		if(nameET.getText().length() < 3){
			nameET.setError(getActivity().getText(R.string.kontakt_err_name));
			isValid = false;
		}
		
		if(!android.util.Patterns.EMAIL_ADDRESS.matcher(mailET.getText()).matches()){
			mailET.setError(getActivity().getText(R.string.kontakt_err_mail));
			isValid = false;
		}
		
		if(messageET.getText().length() < 1){
			messageET.setError(getActivity().getText(R.string.kontakt_err_message));
			isValid = false;
		}
		
		if(!isValid){
			Toast.makeText(getActivity(), getActivity().getText(R.string.kontakt_err_send), Toast.LENGTH_LONG).show();
			return;
		}
		
		// alles ist valid!!

		Intent i = new Intent(Intent.ACTION_SEND);
		i.setType("message/rfc822");
		i.putExtra(Intent.EXTRA_EMAIL, new String[] { "beispiel@axxg.de" });
		i.putExtra(Intent.EXTRA_SUBJECT, getActivity().getText(R.string.app_name) + " von " + nameET.getText() + "(" + mailET.getText() + ")");
		i.putExtra(Intent.EXTRA_TEXT, messageET.getText().toString());
		try {
			getActivity().startActivity(Intent.createChooser(i, "Mail-Apps:"));
			
			nameET.setText("");
			mailET.setText("");
			messageET.setText("");
			Toast.makeText(getActivity(), getActivity().getText(R.string.kontakt_info_send), Toast.LENGTH_LONG).show();
		} catch (android.content.ActivityNotFoundException ex) {
			Toast.makeText(getActivity(), getActivity().getText(R.string.kontakt_err_send), Toast.LENGTH_LONG).show();
		}
	}

}

 

Das Ergebnis

Das Ergebnis sieht dann so aus:

 

Download

Für Faule gibt es hier das fertige Projekt…

Android Version 4.0.3 Inhalt gepacktes Projekt
Android Support Library Version V4 (Version 21) Größe 871 KB (~1 MB)
IDE Eclipse IDE Version 4.2.1 Endung *.zip
Preis kostenlos Lizenz Creative Commons Lizenzvertrag

[download id=“27″ format=“2″]

 

Copyright © 2015 AxxG – Alexander Gräsel




Keine Antworten : “Android: EditText Validierungsfehler anzeigen”

Trackbacks/Pingbacks

  1. Android: Einfaches Kontaktformular | AxxG Blog - […] Letzte Woche hatten wir Validierungsfehler, heute geht es um das Kontaktformular an sich. Ich bin der Meinung, dass jede…

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.