android - 动态更改 Custom PreferenceScreen 的数据

标签 android android-preferences preferencescreen

我正在处理自定义 PreferenceScreen,我已经使用 PreferenceActivity 为设置页面创建了一个自定义屏幕。

下面是我的偏好屏幕。

enter image description here

问题:- 我需要动态更改下载数据的徽章。 我跟着这个question为了实现这种布局。 我已经尝试了该问题的所有答案,但无法找到单一答案。

有没有其他方法可以找到内部偏好的 View ?

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 ,只需将其摘要字段设置为“徽章”,然后您可以使用包含的摘要字段设置值:

Preference pref = (Preference)myPrefScreen.findPreference("download_data");
pref.setSummary("12");

如果您有任何问题,请告诉我。

关于android - 动态更改 Custom PreferenceScreen 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075996/

相关文章:

android - android studio 中的 Http 方法已弃用警告

android - 如何在 android 中从 Gson 存储和检索对象?

android - 设置首选项屏幕的文本颜色

android - PreferenceActivity 未显示(黑屏)

android - 在 getview 中多次调用 Sum 方法

当我关闭蓝牙服务器套接字或蓝牙套接字时,Android 应用程序意外退出

android - 如何在不改变文件大小的情况下旋转位图?

android - 自定义内联 SeekBarPreference - 如何在第一次运行时设置 SeekBar 进度?

android - 在 Android PreferenceActivity 中应用复选框样式