Có ai có mã mẫu để xác thực văn bản đã nhập của người dùng trong tùy chọn không? Ví dụ: tôi có EditTextPreference để người dùng nhập địa chỉ email. Tôi muốn xác thực định dạng địa chỉ email đã nhập và bật lên hộp thoại cảnh báo nếu định dạng không chính xác. Bất cứ ai có bất kỳ mã mẫu cho điều này? Cảm ơnLàm cách nào để bạn xác thực định dạng và giá trị của EditTextPreference được nhập trong Android 2.1?
Trả lời
Thực hiện Preference.OnPreferenceChangeListener
boolean onPreferenceChange (ưu tiên Preference, Object newValue)
Được gọi khi một Preference đã được thay đổi bởi người sử dụng. Điều này được gọi trước khi tiểu bang ưu tiên sắp được cập nhật và trước khi tiểu bang được duy trì.
Trả về Đúng để cập nhật trạng thái của Tùy chọn với giá trị mới.
Vì vậy, bạn có thể trực tiếp trả về kết quả xác thực giá trị.
public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
findPreference("mail_preference_key").setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
return Pattern.matches("mailPattern", (String) newValue);
}
});
}
}
Tôi muốn sử dụng Preference.OnPreferenceChangeListener
hơn SharedPreferences.OnSharedPreferenceChangeListener
.
Trước đây cho phép bạn xác thực giá trị mới trước khi nó được duy trì (và ngăn không cho nó tiếp tục tồn tại) thay vì sau.
Câu hỏi của bạn là một hit đầu tiên của Google khi tôi cố gắng làm điều tương tự, vì vậy hy vọng điều này sẽ giúp một người nào đó. Đây là một cái gì đó tôi đã tấn công với nhau ngày hôm nay để chứng minh OnPreferenceChangeListener, do đó cho phép bạn dừng những thay đổi không hợp lệ.
trong đoạn của bạn:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
Your_Pref = (EditTextPreference) getPreferenceScreen().findPreference("Your_Pref");
Your_Pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
Boolean rtnval = true;
if (Your_Test) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Invalid Input");
builder.setMessage("Something's gone wrong...");
builder.setPositiveButton(android.R.string.ok, null);
builder.show();
rtnval = false;
}
return rtnval;
}
});
}
- 1. Làm cách nào để xác thực giá trị combobox jQuery UI với Plugin xác thực jQuery?
- 2. Làm cách nào để in các giá trị BigDecimal được định dạng?
- 3. Cách lấy giá trị ô với định dạng được áp dụng (giá trị ô được định dạng) bằng OpenXML SDK
- 4. Làm cách nào để định dạng giá trị được hiển thị trong trường chỉnh sửa Rails?
- 5. Giảm kích thước của Thanh Đánh giá trong Android 2.1
- 6. Gurobi python nhận giá trị của biến được xác định
- 7. Làm cách nào để xác thực định dạng của trường email trong ActiveRecord?
- 8. Đường ray: Cách xác thực định dạng chỉ khi có giá trị?
- 9. làm cách nào để bạn chọn mục nhập có giá trị tối đa trong coredata?
- 10. Android - giá trị mặc định trong editText
- 11. Làm cách nào để có được giá trị của dữ liệu người dùng đã nhập?
- 12. Làm cách nào để xác định giá trị được lưu trên ngăn xếp?
- 13. Làm cách nào để bạn có thể nhận được Perl dừng khi tham chiếu giá trị không xác định?
- 14. Làm cách nào để đặt giá trị mặc định của hộp nhập liệu bằng jQuery?
- 15. Làm cách nào để bạn đặt giá trị kép thành "không có giá trị"
- 16. Làm cách nào để xác định và in chỉ mục của giá trị tối đa trong một mảng?
- 17. Trong Eclipse (Java), làm cách nào để xác định nơi nhập thực sự đến từ đâu?
- 18. Làm cách nào để xác định xem giá trị Enum có một hoặc nhiều giá trị được so sánh với?
- 19. Làm thế nào để bạn chỉ định 'DEFAULT' làm giá trị tham số SQL trong ADO.NET?
- 20. Làm cách nào để bạn đặt giá trị của một mảng thành các giá trị của mảng khác trong Java?
- 21. Làm cách nào để nhận được định dạng NSString từ định dạng và va_list?
- 22. Để trình duyệt nhớ giá trị của trường nhập theo dạng được tạo động
- 23. Cách tốt nhất để xác thực giá trị tham số của phương thức WCF và WebService
- 24. Làm thế nào để bạn xác định khi Windows được thực hiện khởi động lại?
- 25. Xác thực nhập địa chỉ trong Android
- 26. Làm cách nào để bạn đặt giá trị mặc định boolean trong Ruby?
- 27. Làm cách nào để xác định và sử dụng biến trong XAML để xác định màu?
- 28. Làm thế nào để bạn xác định loại nội dung của bạn trong ASP.NET WebForms?
- 29. Làm thế nào để xác định và giải thích các định dạng pixel của một CGImage
- 30. SQL - Làm cách nào để tạo bảng có các giá trị dưới dạng cột và định dạng mới?
Tôi có đoạn mã sau: \t \t if (key.equals ("update_delay")) { \t \t \t Chuỗi newvalue = sp.getString (key, null) ; .. \t \t \t if (Integer.parseInt (newvalue) <60) \t \t \t \t sp.edit() putString ("update_delay", "60") cam kết(); } và lần sau tôi nhấp vào EditTextPreference nó vẫn hiển thị giá trị thấp. Bạn có biết nếu commit() không hoạt động trong ngữ cảnh này không? – sargas
Tôi không chắc chắn, nhưng trong cam kết phương pháp tham khảo nói 1. Lưu ý rằng khi hai biên tập viên đang sửa đổi tùy chọn cùng một lúc, người cuối cùng gọi cam kết thắng. 2. Trả về true nếu các giá trị mới được ghi thành công thành lưu trữ liên tục. Điểm 1: Có thể trình chỉnh sửa người dùng thực hiện cuộc gọi cuối cùng. Điểm 2: Kiểm tra xem commit có trả về true không. Hy vọng sự trợ giúp này. – Fede
Điều này không được gọi sau khi thay đổi được thực hiện? Tôi cho rằng @Aaron có câu trả lời đúng. – iozee