3

If I want to enforce a maximum length of input in an EditText field, I can use the maxLength attribute. But if I want to enforce a minimum length (in my case, simply non-blank), I find no corresponding minLength attribute.

I've also looked at the various 'inputType' attributes (phone, password, etc) but I don't see anything like 'required' or 'non-blank'.

I can't believe this would require a custom input filter; it's more likely the answer is so obvious it just doesn't get written down in the form I'm asking the question.

Anne Gunn
  • 2,347
  • 1
  • 28
  • 42

2 Answers2

1

You can simply check that yourField.text() is not equivalent to null or "" at the point of submission. If it is, prompt the user to input something.

jqpubliq
  • 11,874
  • 2
  • 34
  • 26
  • 1
    Maybe also trim the string if you don't want whitespace to count as an imput. – Jeremy Logan Apr 22 '10 at 17:38
  • I appreciate both suggestions. And that's essentially what I'm doing -- validating after all fields in the screen are filled in and the user pushes the 'go' button. But what I was looking/hoping for was a way to give instant feedback when focus leaves one field before it goes to the next. – Anne Gunn Apr 22 '10 at 20:58
  • Then you just want to do the check in the `onFocusChanged()` of the EditText – jqpubliq Apr 22 '10 at 22:17
  • THAT's what I was missing. I looked at onFocusChanged() but was lead astray by it being a View method so I was thinking it applied to something other than a single field. But, of course, an EditText is a TextView which is, in turn, a View. Thanks. – Anne Gunn Apr 23 '10 at 15:54
1

Carefull with something though. If you have a submit button, for instance, and your user presses submit without changing the focus out of your TextEdit, your method won't be called.

Take an Activity with 2 EditTexts and 1 button named "Go":

1) User writes something in EditText1

2) User clicks on EditText2

3) Instead of writting something there just clicks go.

Your onFocusChanged() method won't be called because focus is not "lost".

If you have a validation in your Go button_click method, it will trigger, of course, but you won't achieve your goal "I was looking/hoping for was a way to give instant feedback"

You can try using TextWatcher.

Tivie
  • 18,864
  • 5
  • 58
  • 77