很久没有发博客了,这次试用android的Preference遇到了一些问题,虽然解决方案最后都很轻松,但是过分依赖于找资料的过程可不是很轻松。好了废话不多说,中文搜索出来的首选项都是最最基础的解释和demo,这吧遇到的问题说一说,下面先来说RingstonePreference的问题:
试用RingstonePreference相比于其他的Preference提供的方法感觉略显单薄,尤其setValue、getValue没有提供,就在下一次进入初始化(因为默认试用上一次的,所以试用首选项时记得activity初次加载的时候数据还原)和获取值的时候遇到问题。
今天set的方法在这里搜到了最接近的答案:
http://stackoverflow.com/questions/6061598/how-to-set-ringtonepreference-value-from-code
其实这个里面的问题只是没有commit
Editor edit=ringPreference.getSharedPreferences().edit();
edit.putString(ringPreference.getKey(), alarm.getRingSource());
edit.commit();
set的方法就是这样的,
下面先附上get的方法,这个比较简单
ringPreference.getSharedPreferences().getString(ringPreference.getKey(), "");
开始纠结于找不到set方法,最后无奈了去看源码,然后所有问题都迎刃而解了,不过在你并不对这些数据能非常简单的控制的时候最好使用上面两种方法,然后其他情况就用到这里了,这里有几个protected方法
protected void onSaveRingtone(Uri ringtoneUri) {
persistString(ringtoneUri != null ? ringtoneUri.toString() : "");
}
再看父类Preference中的两个
protected boolean persistString(String value) {
if (shouldPersist()) {
// Shouldn't store null
if (value == getPersistedString(null)) {
// It's already there, so the same as persisting
return true;
}
SharedPreferences.Editor editor = mPreferenceManager.getEditor();
editor.putString(mKey, value);
tryCommit(editor);
return true;
}
return false;
}
protected String getPersistedString(String defaultReturnValue) {
if (!shouldPersist()) {
return defaultReturnValue;
}
return mPreferenceManager.getSharedPreferences().getString(mKey, defaultReturnValue);
}
这里应该很清晰了,当然,api提供了能获取到值的路径,但也为我们重新构造最适合特定项目中使用的机制,只需要简单的在public方法中super一下就成功了,其他还有很多方法可以构造更有用途的方法,这里就个常用的例子。
因此你可以很方便的构造自己的Preference(在开发过程中其实会用到很多自己重写的Preference,因为有些情况方法没有提供,也有可能会有需要对getValue解析等等很多情况。父类中几乎大多都是protected方法,给重写带来很多方便),Preference为开发提供了很多遍历,这里跟大家分享了
附上父类源码地址:
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/preference/RingtonePreference.java
分享到:
相关推荐
Android 作为一款流行的移动操作系统,对于应用程序的安全性和首选项的管理具有重要意义。本章主要讨论 Android 的安全性和首选项的管理,包括 Android 的安全模型、权限管理、首选项的架构和组织等。 8.1 Android ...
【Android首选项Preference详解】 首选项(Preference)在Android应用中主要用于实现用户的个性化设置,即用户可以根据自己的喜好调整应用的一些参数。它是Android系统提供的一种便捷的数据存储方式,通常用于存储...
然而,由于标题、描述和标签中的重复字符串“RingtonePreference”并未提供具体的信息,我们将重点解读部分代码内容来构建一个关于Android Preference系统如何工作以及如何在应用中实现用户自定义设置的知识体系。...
标题与描述均提及了《Android中PreferenceActivity详解》,这一主题涉及了Android开发中关于用户偏好设置的核心组件——PreferenceActivity的深入解析。以下是基于标题、描述、标签以及部分内容的关键知识点总结,...
1. 创建首选项的XML配置文件:在/res/xml目录下创建一个XML文件,例如`preferences.xml`,定义各个首选项的键值对和属性。 ```xml <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">...
### Android之PreferenceActivity详解 #### 一、PreferenceActivity概述 **PreferenceActivity** 是Android系统提供的一种专门用于展示和管理应用设置界面的Activity。它能够帮助开发者快速构建美观且功能丰富的...
4. `RingtonePreference`:让用户从设备的铃声列表中选择一个铃声。 5. `Preference`:基础类型,通常用于创建自定义的偏好设置。 在实际应用中,可以根据需求组合使用这些Preference,构建出丰富的设置页面。同时...
### Android之PreferenceActivity详解 #### 一、Introduction 在Android开发过程中,经常需要为应用提供一个用户可配置的界面,以便于用户能够调整各种设置。PreferenceActivity正是Android平台提供的一个非常实用...
9.3 以编程方式操作首选项 9.4 使用首选项保存状态 9.5 参考资料 9.6 小结 第10章 探索安全性和权限 10.1 理解Android安全性模型 10.1.1 安全性概念概述 10.1.2 为部署签名应用程序 10.2 ...
`android:key`同样用于标识,`android:title`是标题,`android:showDefault="true"`表示显示系统默认的铃声选项,`android:showSilent="true"`表示显示静音选项,`android:summary`则是提示用户选择铃声的说明。...
在Android开发中,PreferenceActivity配合一系列的Preference子类,如CheckBoxPreference、EditTextPreference、ListPreference和RingtonePreference,可以轻松构建各种常见的设置选项。以下是对这些组件的详细介绍...
- ListPreference:显示一个列表供用户选择,可以预先定义选项。 - Preference:仅显示文本,不提供交互,通常用于分组或说明。 - PreferenceCategory:用于将相关设置分组,提高界面的可读性。 - ...
Android提供preference这个键值对的方式来处理这种情况,自动保存这些数据,并立时生效,同时Android提供一种类似的layout的方式来进行Preference的布局。 Preference组件有ListPreference,EditTextPreference,...
Preference_Demo是一个基于Android平台的源码示例,主要展示了如何在Android应用中使用Preference组件。Preference类是Android SDK提供的一种用于创建用户设置界面的工具,它允许开发者以一种声明式的方式定义设置项...
在Android系统中,"RingProfile_android源码_"很可能是指一个关于Android系统中铃声配置和切换电话场景模式的源代码库。这个项目可能包含了设置模块的相关代码,允许用户自定义手机的铃声、通知音以及各种场景下的...
此DEMO内含基本的android preference framework的简单介绍,包括CheckboxPreference, RingtonePreference, EditTextPreference以及ListPreference。主要探究了一下android 怎么通过使用preference从而达到对用户定制...
扩展的AndroidX首选项该库旨在解决在官方AndroidX首选项库中发现的一些问题。 另外,还有可用,例如RingtonePreference , DatePickerPreference和TimePickerPreference 。捐款如果您想支持我,您可以通过PayPal捐款...
9.3 以编程方式操作首选项 9.4 使用首选项保存状态 9.5 参考资料 9.6 小结 第10章 探索安全性和权限 10.1 理解Android安全性模型 10.1.1 安全性概念概述 10.1.2 为部署签名应用程序 10.2 ...
在Android开发中,Preference是用来创建用户界面的一种组件,主要用于实现设置界面。Preference允许开发者轻松地创建可交互的UI元素,如开关、选择器和输入框等,这些元素通常出现在应用程序的设置菜单中。本篇文章...
Shared Preferences是Android开发中一种轻量级的数据存储方式,它主要用于保存应用程序中的简单配置或用户首选项。在Android系统中,当需要存储少量的非结构化数据,如开关状态、字符串选择等,Shared Preferences是...