我正在使用自定义PreferenceScreen,我使用PreferenceActivity为设置页面创建了自定义屏幕.
以下是我的偏好屏幕.
问题:-
我需要动态更改下载数据的徽章.
我按照这个question来实现这个布局.
我已经尝试过该问题的所有答案,但没有单独回答.
有没有其他方法可以找到哪个内部偏好?
的settings.xml
- <?xml version="1.0" encoding="utf-8"?>
- <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- <Preference android:title="@string/settings_user_profile" android:key="user_profile" android:summary="@string/settings_user_profile_desc" android:layout="@layout/setting_list"></Preference>
- <Preference android:title="@string/settings_download" android:key="download_data" android:summary="@string/settings_download_desc" android:layout="@layout/setting_list"></Preference>
- </PreferenceScreen>
解决方法
您可以子类化Preference,覆盖onBindDialogView() – 只需记住从< Preference ...>更改XML.包括您的包和类< com.example.app.BadgedPreference ...>:
- @Override
- protected void onBindDialogView(View v) {
- super.onBindDialogView(v);
- Log.v( "onBindDialogView()",v.getClass().getSimpleName() );
- }
如果您的BadgedPreference有一个处理更改的方法,您可以更轻松地使用它 – 从PreferenceActivity中:
- PreferenceScreen myPrefScreen = (PreferenceScreen)getPreferenceScreen();
- BadgedPreference bp = (BadgedPreference)myPrefScreen.findPreference("download_data");
- // Custom method
- bp.setBadgeValue(12);
更简单地说,您可以使用标准首选项,只需将其摘要字段设置为“徽章”,然后您可以使用包含的摘要字段设置值:
- Preference pref = (Preference)myPrefScreen.findPreference("download_data");
- pref.setSummary("12");
如果您有任何疑问,请告诉我.