¡Lo tengo! Recorrí el internet para siempre, y reuní algunas cosas para que funcione. Básicamente, lo que hace es ejecutar un proceso paralelo que se ejecutará constantemente mientras el usuario se centra en el cuadro de texto de edición particular. Establecerá un filtro para que el usuario solo pueda ingresar 0-5 en el primer intervalo entero, pero se le permitirá ingresar 0-9 para el segundo. Obviamente, esto le dará 0-59 en lugar de 1-60, pero eso es lo que quiere en segundos de todos modos. Este código va antes del método onCreate, en el interior de su clase:
final InputFilter filter = new InputFilter()
{
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dent)
{
for (int i = start; i < end; i++)
{
if ((source.charAt(start) == "6".charAt(0)) || (source.charAt(start) == "7".charAt(0)) || (source.charAt(start) == "8".charAt(0))
|| (source.charAt(start) == "9".charAt(0)) || (!Character.isDefined(source.charAt(i))))
{
return "";
}
}
return null;
}
};
private class FilterCheckerTask extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params)
{
while(true)
{
if (<EditText>.getText().toString().isEmpty())
{
Log.e("empty","empty");
<EditText>.setFilters(new InputFilter[]{filter, new InputFilter.LengthFilter(2)});
}
else if (<EditText>.getText().toString().charAt(0) >= "6".charAt(0))
{
Log.e("front num bad","greater than 5");
<EditText>.setFilters(new InputFilter[]{filter, new InputFilter.LengthFilter(2)});
}
else
{
Log.e("unfiltered", "unfiltered");
<EditText>.setFilters(new InputFilter[]{new InputFilter.LengthFilter(2)});
}
if (kicker)
{
return null;
}
}
}
}
Luego, dentro de la onCreate
método:
Time_sec.setOnFocusChangeListener(new OnFocusChangeListener()
{
public void onFocusChange(View v, boolean hasFocus)
{
new FilterCheckerTask().execute();
if(!hasFocus)
{kicker = !hasFocus;}
}
});
Como dije en la primera parte, esto hará que sea lo que el usuario solo puede ingresar números entre 00 y 59 en su cuadro de texto de edición.Sé que puede parecer un poco descuidado, y probablemente se pueda limpiar un poco en algunas de las declaraciones if, pero hasta donde sé, funciona perfectamente y no parece ralentizar el sistema en absoluto. Espero que esto te ayude, y si no, los futuros googlers.
'android: numeric =" integer "' es muy fino y útil, pero lamentablemente está en desuso. – TechNyquist