Ich möchte in der Lage sein, Code wie diesen aufzurufen, ähnlich wie setError
in einer TextView eingestellt ist:
spinner.setError("Error message");
setError
funktioniert jedoch nur für einen EditText, nicht für einen Spinner.
Ich möchte den Benutzer benachrichtigen, wenn das Drehfeld nicht ausgewählt ist. Wie kann ich eine solche Benachrichtigung durchführen ohne Toast?
In diesem Thread gibt es einige Lösungen Erstellen eines setError () für den Spinner :
Das EdmundYeung99 funktioniert für mich, entweder Sie verwenden Ihren eigenen Adapter oder nicht. Fügen Sie einfach den folgenden Code in Ihre Validierungsfunktion ein:
TextView errorText = (TextView)mySpinner.getSelectedView();
errorText.setError("");
errorText.setTextColor(Color.RED);//just to highlight that this is an error
errorText.setText("my actual error text");//changes the selected item text to this
Stellen Sie jedoch sicher, dass der Spinner-Adapter mindestens einen Wert enthält, wenn Sie die Überprüfung durchführen. Wenn nicht, wie ein leerer Adapter, der darauf wartet, mit Daten gefüllt zu werden, geben Sie Ihrem Adapter eine leere Zeichenfolge:
ArrayAdapter<String> adapter = new ArrayAdapter<>(context, Android.R.layout.simple_spinner_item, new String[]{""});
mySpinner.setAdapter(adapter);
Die Spinner-Klasse gibt eine Textansicht zurück, wenn Sie getSelectedView()
verwenden. Sie können also setError()
indirekt verwenden.
((TextView)spinner.getSelectedView()).setError("Error message");
Ergebnisse sollten sein wie ...
Hoffe, es wird hilfreich sein!
Hier ist eine Lösung verwendet eine versteckte Textansicht, um zusätzlich zum Fehlersymbol im Drehfeld eine Popup-Meldung anzuzeigen. In einem Fehlerzustand sieht der Spinner folgendermaßen aus:
Wenn kein Fehler vorliegt, sieht es so aus.
Die vollständige Lösung ist hier dokumentiert: https://stackoverflow.com/a/29956372/3063884