2013-05-18 42 views
5

Tôi đang phát triển ứng dụng android .. thực sự tôi cần đặt giá trị tối thiểu và tối đa cho mục nhập editext giá trị tối thiểu của tôi là 18 và tối đa là 65. Tôi đã thực hiện mã chính xácandroid edittext minmum và giá trị tối đa

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

tôi có mã này fro trang web này chỉ ... Is there a way to define a min and max value for EditText in Android? thực này cho các giá trị từ 1 đến 12 và cho giá trị mà nó đang làm việc tốt nhưng khi tôi thay đổi giá trị của tôi 18 và 45 nó không phải là làm việc ... bất cứ ai có thể vui lòng giúp tôi .. những gì thay đổi tôi phải được thực hiện cho việc này ...

+0

thử đăng nhập các giá trị hoặc thử debugger mmode. –

+1

bạn đã thử trả lời từ itsrajesh4uguys trong liên kết bạn đã đưa ra ... giải pháp đó tốt và làm việc cho tôi ... –

+0

cảm ơn jeet vì đã bình luận ... hãy để tôi thử .. – user2223317

Trả lời

3

Bạn nên repla CE dòng:

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

Với

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

Nhìn vào Can someone help me with the parameters to the Android InputFilter "filter" method? (plus regex) để hiểu tại sao

+0

nhờ androidcompile cho comenting ... hãy để tôi kiểm tra – user2223317

+0

no .. không hoạt động ... bởi vì khi tôi nhập hai số 18 và 65 nó không hoạt động .. nhưng nó hoạt động tốt cho số đầu tiên trong khoảng từ 1 -9 sau nó sẽ không hoạt động như cũ nếu giá trị nhỏ nhất là 10 thì nó sẽ không hoạt động ... chúng ta sẽ không thể gõ chữ cái đầu tiên ... đó là vấn đề .. – user2223317

+1

Tôi nghĩ rằng bạn nên có giới hạn tối thiểu luôn đặt 0. Nếu không, nếu số bạn muốn nằm trong khoảng từ 40 đến 120, thì không có số nào được chấp nhận vì nếu bạn muốn số 100 và bạn bắt đầu nhấn '1', '0', '0' bất kỳ bộ lọc chính xác nào sẽ thậm chí không chấp nhận chữ số đầu tiên kể từ khi nó không phải là trên 40 – EyalBellisha

Các vấn đề liên quan