2013-05-18 11 views
5

Sono in sviluppo di un'app Android .. in realtà ho bisogno di impostare un valore minimo e massimo per una voce editext il mio valore minimo è 18 e il massimo è 65. Ho fatto il codice esatto di questoandroid eittext minmum e valore massimo

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")}); 

ho avuto questo codice fro solo in questo sito ... Is there a way to define a min and max value for EditText in Android? in realtà questo per i valori compresi tra 1 e 12 e per quel valore si sta lavorando bene, ma quando ho cambiato per il mio valore 18 e 45 non è lavoro ... qualcuno può aiutarmi per favore ... quale cambiamento devo fare per questo ...

+0

prova ad accedere i valori o cercare debugger mMode. –

+1

hai provato la risposta da itsrajesh4uguys nel link che hai dato ... quella soluzione è buona e ha funzionato per me ... –

+0

grazie jeet per aver commentato ... fammi provare .. – user2223317

risposta

3

Si dovrebbe repla Ce la linea:

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

Con

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

Guardate Can someone help me with the parameters to the Android InputFilter "filter" method? (plus regex) capire perché

+0

grazie androidcompile per comenting ... fammi controllare – user2223317

+0

no ... non funziona ... perché quando inserisco i due numeri 18 e 65 non funziona .. ma funziona bene per il primo numero tra 1 -9 dopo non funzionerà come per esempio se il valore minimo è 10 allora non funzionerà ... non potremo digitare la prima lettera1 ... questo è il problema .. – user2223317

+1

Penso che dovresti avere il limite minimo sempre impostato su 0. Altrimenti, se il numero desiderato è tra 40 e 120, ad esempio, nessun numero sarebbe accettato poiché se si desidera il numero 100 e si inizia a premere '1', '0', '0' qualsiasi filtro corretto sarebbe nemmeno accettare la prima cifra poiché non è superiore a 40 – EyalBellisha

Problemi correlati