web-dev-qa-db-ja.com

AndroidのSpinnerにエラーメッセージを設定するにはどうすればよいですか?

TextViewでsetErrorを設定する方法と同様に、次のようなコードを呼び出すことができます。

spinner.setError("Error message");

ただし、setErrorは、スピナーではなく、EditTextでのみ機能します。

スピナーフィールドが選択されていない場合、ユーザーに通知したいです。どうすればこのような通知を実行できますかToastを使用せずに

38
Gopinath S

このスレッドにはいくつかの解決策があります スピナーのsetError()を作成する

EdmundYeung99の1つは、自分でアダプタを使用しているかどうかに関係なく機能します。検証関数に次のコードを追加するだけです。

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

ただし、検証を行うときは、スピナーアダプターに少なくとも1つの値があることを確認してください。そうでない場合、空のアダプタが移入を待っているように、アダプタに空の文字列を取得させます。

ArrayAdapter<String> adapter = new ArrayAdapter<>(context, Android.R.layout.simple_spinner_item, new String[]{""});
mySpinner.setAdapter(adapter);
66
Lionel T.

getSelectedView()を使用すると、スピナークラスはテキストビューを返します。したがって、setError()を間接的に使用できます。

((TextView)spinner.getSelectedView()).setError("Error message");

結果は次のようになります...

setError in spinner

それが役立つことを願っています!

30
Khan

ここに解決策があります スピナーのエラーアイコンに加えて、非表示のTextViewを使用してポップアップメッセージを表示します。エラー状態の場合、スピナーは次のようになります。

Spinner in invalid state

エラー状態でない場合は、次のようになります。

Spinner in valid state

完全なソリューションはここに文書化されています: https://stackoverflow.com/a/29956372/3063884

2
CJBS