2012-04-13 23 views
11

Xin chào các lập trình viên đồng nghiệp, tôi có một vấn đề nhỏ với hoạt động Preferences.Android - Cách thay đổi văn bản trong hoạt động tùy chọn động?

http://developer.android.com/reference/android/preference/PreferenceActivity.html

Tôi đã có chỉ là một loại sở thích và một listPreference:

<?xml version="1.0" encoding="utf-8"?> 

<PreferenceCategory android:title="@string/basic_settings" > 
    <ListPreference 
     android:defaultValue="70" 
     android:entries="@array/listArray" 
     android:entryValues="@array/listValues" 
     android:key="updates_interval" 
     android:persistent="true" 
     android:summary="@string/SOME_SUMMARY" 
     android:title="@string/SOME_TITLE" /> 
</PreferenceCategory> 

tôi cần phải có giá trị được lựa chọn (một trong những mặc định hoặc người dùng đã định nghĩa) được viết trong bản tóm tắt của listPreference, cho ví dụ: Chúng tôi sẽ có ít nhất 70 ký tự.

Tôi làm cách nào để thực hiện điều này từ mã?

Any help is appreciated

Trả lời

24

Hãy thử như thế này ..

Preference customPref = (Preference) findPreference("updates_interval");<-- your preferences key 
customPref.setSummary("desired string"); 
+1

Cảm ơn! :) Tôi không thấy phương thức findPreference. – user1332117

0

Bạn có thể tạo một lớp con của ListPreference mà bạn thiết lập một OnPreferenceChangedListener từ đó bạn sẽ có quyền truy cập vào các giá trị mới, và thiết lập văn bản trên ListPreference của bạn. Tôi nghĩ rằng hàm setSummary() trên ListPreference sẽ cập nhật văn bản dưới tên của tùy chọn. Nếu điều đó không hoạt động, bạn cũng có thể ghi đè getView() để triển khai chế độ xem tùy chỉnh của riêng bạn cho Tùy chọn mà bạn có thể đặt văn bản trực tiếp.

1

đây là một ví dụ nhỏ:

Preference etp = (Preference) findPreference("the_pref_key"); 
etp.setSummary("New summary"); 

Điều này đòi hỏi bạn hiển thị sở thích của bạn hoặc từ một PreferenceActivity hoặc từ một PreferenceFragment, vì findPreference() là một phương pháp của các lớp này. Bạn có thể làm điều đó rồi.

Để thay đổi bản tóm tắt mỗi lần người dùng thay đổi tùy chọn thực tế, hãy sử dụng số OnPreferenceChangeListener và kiểm tra xem khóa có liên quan đã thay đổi trong gọi lại hay chưa. Sau khi thay đổi, chỉ cần chỉnh sửa tóm tắt như trên.

+0

Rất dễ dàng! Cảm ơn rất nhiều :) Tôi đã quên phương pháp findPreference ... – user1332117

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