Чтобы разрешить только числовые значения, вы можете использовать android:inputType="number"
в вашем файле EditText XML
Для отслеживания значения, записанного в EditText
, вы можете прослушать изменения EditText
, используя addTextChangedListener
метод и TextWatcher
интерфейс
Timer timer = new Timer();
final long DELAY = 2000; // in ms
field1 = (EditText)findViewById(R.id.field1);
field1.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(final Editable s) {
// Do whatever you want with the updated value
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// TODO: do what you need here
// you will probably need to use
// runOnUiThread(Runnable action) for some specific
// actions
runOnUiThread(new Runnable() {
@Override
public void run() {
String minsString = "";
String secsString = "";
switch (s.length()) {
case 1:
if (Integer.parseInt(String.valueOf(s)) == 0 || Integer.parseInt(String.valueOf(s)) == 1) {
field1.setText(s + " min");
} else {
field1.setText(s + " mins");
}
break;
case 2:
field1.setText(s + " mins");
break;
case 3:
minsString = s.toString().substring(0, 2);
secsString = s.toString().substring(2);
if (Integer.parseInt(secsString) > 59) {
secsString = "59";
}
field1.setText(minsString + " mins " + secsString + " secs");
break;
case 4:
minsString = s.toString().substring(0, 2);
secsString = s.toString().substring(2);
if (Integer.parseInt(secsString) > 59) {
secsString = "59";
}
field1.setText(minsString + " mins " + secsString + " secs");
break;
default:
break;
}
}
});
}
}, DELAY);
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (timer != null)
timer.cancel();
}
});
обращение к таймеру решение для предотвращения обновления экземпляра текста редактирования