我正在使用自定义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");
如果您有任何疑问,请告诉我.