2013-03-24 26 views
10

Tôi đang sử dụng Edittextpreference làm một trong các tùy chọn trong phần cài đặt. Tôi muốn xác thực edittextpreference này khi người dùng nhập dữ liệu vào nó và nhấn ok; trước khi lưu nó trong sharedpreference.Xác thực tùy chọn chỉnh sửa Android Edit

Tôi đang cố thực hiện một việc như thế này nhưng điều này sẽ lưu tùy chọn đầu tiên tôi giả sử.

editTextPreference 
      .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
       @Override 
       public boolean onPreferenceChange(Preference preference, 
         Object newValue) { 
        if (((newValue.toString().length() == 15) { 
          // save preference only if length is equal to 15 
        } 
       }) 
       }); 

ai đó có thể hướng dẫn cho tôi làm thế nào để xác nhận edittextpreference trước khi nó được lưu trong sharedpreference để tôi có thể quyết định nếu tôi muốn lưu nó hay không.

Trả lời

21

Theo doc here

Được gọi khi một Preference đã được thay đổi bởi người sử dụng. Điều này được gọi là trước khi trạng thái của Ưu tiên sắp được cập nhật và trước khi trạng thái được duy trì.

Và 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ể làm như sau

 editTextPreference 
      .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
       @Override 
       public boolean onPreferenceChange(Preference preference, 
         Object newValue) { 
        if (((newValue.toString().length() == 15) { 
          // 
          return true; 
        } 
        else{ 
          // invalid you can show invalid message 
          return false; 
        } 
       }) 
     }); 
+0

sở thích Vì vậy, tôi tải từ xml qua addPreferencesFromResource (R.xml.settings); và triển khai SharedPreferences.OnSharedPreferenceChangeListener và Preference.OnPreferenceChangeListener trong PreferenceFragment thay vì đặt nó vào EditTextPreference như bạn mô tả. Trình nghe onPreferenceChange không bao giờ được gọi. Chỉ có hàm onSharedPreferenceChanged. Tại sao bạn nghĩ rằng? – marienke

+0

http://stackoverflow.com/a/41446046/956975 <- có thể có liên quan gì đó (sự khác biệt giữa SharedPreferences và Preferences). – marienke

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