2017-09-08 11 views
4

ノーマルエラーがsetError()メソッドを使用して表示:SETERRORは

Screenshot #1

問題:

Screenshot #2

わかりましたので、私は、同じダイアログ内の別のEditTextを示すためOnClickListenerを持っていDatePickerダイアログ。私はsetError()赤い警告アイコンを表示し、そのアイコンをクリックすると、イベントはまだOnClickEditTextDatePickerにポップアップで処理されるので、私はエラーメッセージを表示することはできません。

私が望むもの:アイコンをクリックするとエラーメッセージが表示され、アイコンの外側をクリックするとDatePickerが表示されます。

+0

使用のカスタムレイアウトを支援を期待し、同じ –

答えて

0

単純な解決策は、errorがonclickListenerの内部でnullであるかどうかをチェックすることです。 すなわち、

if(((EditText)view).getError() == null) { 
//Handle your click for showing picker 
} 
0

完了時あなたはnull.anyクエリにすべてのフィールドと第2日付エディットテキスト・セット・エラーは、あなたが、男性ああ

mEditText.setError(null);//removes error 
mEditText.clearFocus(); //clear focus from edit text 
+0

どのようにこれが解決しないを扱うか、これを試してみてください彼は問題がありますか?彼はエラーを取り除きたいだけではありません。ご質問をお読みください。 – Vucko

2

を求めることができ、あなたのコードに応じて をこの次のコードを使用することができます私は文字通り2日前にこの問題を抱えていました。私は両方とも日付ピッカーのポップアップを作成しても、メッセージを表示し、するために、(フォーカスを持っていることを確認しする方法を発見した私はこのようなTextInputLayoutEditTextをラップしているやってしまった何を:。

<android.support.design.widget.TextInputLayout 
      android:id="@+id/birthDateInputLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <EditText 
       android:id="@+id/input_birth_date" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:hint="@string/birth_date_hint" 
       android:inputType="date" /> 
     </android.support.design.widget.TextInputLayout> 

、代わりにエディットテキストにエラーを設定するので、その後、私の代わりにこのようTextInputLayoutにエラーを設定します。

birthDateInputLayout.setErrorEnabled(true); 
birthDateInputLayout.setError("This field cannot be empty."); 

注:を設定する通常の方法とまったく同じに見えていませんのエラーしかし、それは十分によく見えるし、少し異なって問題を解決します。ここで

は、それがどのように見えるかのスクリーンショットです: enter image description here

+0

ありがとう!他に何も動かなければUIを変更することを検討します。今のところ、可能な限りUIを変更せずにソリューションを探してください。 – Xc0d3r

+1

@ Xc0d3rあなたのコードを変更することを意味していても、この解決策を進めるべきだと思います。この方法では、他のソリューションを動作させるために書き留めなければならない可能性のあるハックと比べて、うまく動作するきれいなコードが得られます。さらに個人的な意見では、エラーを表示するためにそのモードが本当に嫌いです。本当に悪くてマテリアルデザインと調和しません。 –

+0

私は@IulianPopescu、私の隣人に同意します:)これは本当に何とかマテリアルによく混合します。しかし、OPがまだ彼の元のアイデアを追いたいなら、それはいいですね。私の解決策は結局誰かを助けるかもしれない。 – Vucko

0

onClick(View v){ 
    if(editText.getError() != null){ 
     editText.requestFocus(); // to show error message 
    }else{ 
     // open date picker dialog here or do you stuff here 
    } 

はそれが

+0

ありがとう!これは動作しますが、 'EditText'が** focusable **のときだけです。残念ながら私の場合、私はユーザーに手動で日付を入力させたくありません。私が考えた解決策の1つは、 'EditText'の代わりに' TextView'を使うことでした。 – Xc0d3r

+0

あなたはあなたのケースでedittextに入力するようにユーザーを制限することもでき、エラーメッセージだけを表示することもできます。 –

+0

フォーカスを要求した後、このeditText.setInputType(InputType.TYPE_NULL);を使用します。 –

関連する問題