2013-05-18 7 views
5

Jestem w trakcie rozwoju aplikacji na Androida. W rzeczywistości muszę ustawić minimalną i maksymalną wartość dla wpisu editext moja minimalna wartość to 18, a maksymalna to 65. Zrobiłem dokładnie kod tegominmum androida edittext i maksymalnej wartości

package com.test; 

import android.text.InputFilter; 
import android.text.Spanned; 

public class InputFilterMinMax implements InputFilter { 

    private int min, max; 

    public InputFilterMinMax(int min, int max) { 
     this.min = min; 
     this.max = max; 
    } 

    public InputFilterMinMax(String min, String max) { 
     this.min = Integer.parseInt(min); 
     this.max = Integer.parseInt(max); 
    } 

    @Override 
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
     try { 
      int input = Integer.parseInt(dest.toString() + source.toString()); 
      if (isInRange(min, max, input)) 
       return null; 
     } catch (NumberFormatException nfe) { }  
     return ""; 
    } 

    private boolean isInRange(int a, int b, int c) { 
     return b > a ? c >= a && c <= b : c >= b && c <= a; 
    } 
} 




EditText et = (EditText) findViewById(R.id.myEditText); 
et.setFilters(new InputFilter[]{ new InputFilterMinMax("1", "12")}); 

mam ten kod fro tylko tej strony ... Is there a way to define a min and max value for EditText in Android? faktycznie to dla wartości między 1 a 12 i dla tej wartości to działa dobrze, ale kiedy zmieniło się moje wartości 18 i 45 nie jest działa ... czy ktoś może mi pomóc. Jaką zmianę muszę wykonać ...

+0

spróbować zalogowaniu wartości lub spróbuj debugger mmode. –

+1

czy wypróbowałeś odpowiedź od itsrajesh4uguys w linku, który podałeś ... to rozwiązanie jest dobre i działało dla mnie ... –

+0

dziękuję za komentarz ... pozwól mi spróbować ... – user2223317

Odpowiedz

3

Powinieneś CE wiersz:

int input = Integer.parseInt(dest.toString() + source.toString()); 

Z

int input = Integer.parseInt(source.toString()); 

spojrzeć na Can someone help me with the parameters to the Android InputFilter "filter" method? (plus regex) zrozumieć dlaczego

+0

dziękuję androidcompile for comenting ... pozwól mi sprawdzić – user2223317

+0

nie .. nie działa ... ponieważ po wprowadzeniu dwóch liczb 18 i 65 to nie działa .. ale działa dobrze dla pierwszego numeru od 1 -9 po nie będzie działać tak, jakby był, jeśli minimalna wartość wynosi 10, to nie zadziała ... nie będziemy w stanie wpisać pierwszej litery 1 ... to jest problem. – user2223317

+1

Myślę, że powinieneś mieć minimalną granicę zawsze ustawioną na 0. W przeciwnym razie, jeśli żądany numer zawiera się między 40 a 120, to żadna liczba nie zostanie zaakceptowana, ponieważ jeśli chcesz numer 100 i zaczniesz naciskać "1", "0", "0", poprawny filtr nie akceptuje nawet pierwszej cyfry, ponieważ nie jest wyższa niż 40 – EyalBellisha

Powiązane problemy