如何在fragment的使用中使用Preferencefragment的使用

17:13 提问
preferencefragment如何添加底部button????
package com.example.Andro
import android.app.A
import android.os.B
public class SetPreferenceActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content,
new PrefsFragment()).commit();
public class PrefsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener{
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
按赞数排序
自定义一个Preference就可以了。
其他相似问题转载:http://blog.csdn.net/qinjuning/article/details/6710003
&在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局。当然,凡事都有例外,FMRadio应用程序中则使用了View布局结构(可能是该应用程序是marvel公司提供的,如果由google公司做,那可说不准)。归根到底,Preference布局结构和View的布局结构本质上还是大同小异,Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性(每个PreferenPreferencece存储在相对应下的SharedPreference文件夹下)。
下面,我们对比Preference和View下得各个子控件,对他们的家庭元素在宏观上有个更好的把握性。
&&&& 单一控件:
&&&&&&&&&&&&&&&&&&&&&&& Preference 控件家庭&&&&&&&&& View控件家庭&&&&&& 控件含义
&&&&&&&&&&&&&&&&&&&&&&&&& Preference&&&&&&&&&&&&&&&&& TextView&&&&&&&&&& 文本框
&&&&&&&&&&&&&&&&&&&&&&&&& CheckPreference&&&&&&&&&&&& CheckBox&&&&&&&&&& 单选框
&&&&&&&&&&&&&&&&&&&&&&&&& EditTextPreference&&&&&&&&& EditText&&&&&&&&& 输入文本框&
&&&&&&&&&&&&&&&&&&&&&&&&& ListPreference&&&&&&&&&&&&& ListView&&&&&&&&& 列表框
&&&&&&&&&&&&&&&&&&&&&&&&& RingtonePreference&&&&&&&&& ——&&&&&&&&&&&&&& 铃声
&&&&&&&&& 其实在Android源码系统中还有很多的”未完工”的Preference, 没有为它们提供PI接口,例如SeekBarPreference,
&&&&&& 有兴趣的同学可以参考源码,具体路径为:frameworks/base/core/java/preference。
&&& 组合控件:
&&&&&&&&&&&&& PreferenceCategory :类似于LinearLayou、RelativeLayout,用于组合一组Preference,使布局更具备层次感 。
&&&&&&&&&&&&& PreferenceScreen& : 所有Preference元素的根节点。
&& 显示Preference布局结构的方法为:
&&&&&&&&&& 使我们的Activity继承PreferenceActivity,然后在onCreate()方法中通过&&&
&&&&&&addPreferencesFromResource(R.xml.custom_preference) (我们自定义的Preference 布局)。
&&&&&&怎么样,是不是似曾相识?稍后会用一个Demo来为您详述。
&&&Preference元素的通用XML Attributes说明:&&&&
&&&&&&&&android:key&:&&&&&&&&&
每个Preference控件独一无二的”ID”,唯一表示此Preference。&&&&&&&&&&
&&&&&&&&&android:defaultValue&:
默认值。 例如,CheckPreference的默认值可为”true”,默认为选中状态;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& EditTextPreference的默认值可为”110” 。
&&&&&&&&&android:enabled&:&&&&&
表示该Preference是否可用状态。&&&&&
&&&&&&&&&android:title&:&&&&&&&
每个Preference在PreferenceScreen布局上显示的标题——大标题
&&&&&&&&&android:summary&:&&&&&
每个Preference在PreferenceScreen布局上显示的标题——小标题(可以没有)
&&&&&&&&&android:persistent:&&&
表示Preference元素所对应的值是否写入sharedPreferen文件中,如果是true,则表示写
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 入;否则,则表示不写入该Preference元素的值。
&&&&&&&&&android:dependency:&&&
表示一个Preference(用A表示)的可用状态依赖另外一个Preference(用B表示)。B可用,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 则A可用;B不可用,则A不可用。
&&&&&&&&&android:disableDependentsState:& 与android:dependency相反。B可用,则A不可用;B不可用,则A可用。
& &常用的方法则包括:
&&&&&&&&&&&&&& &getKey()&&&&&&&&&&& setKey()
&&&&&&&&&&&& getSummary()&&&&&&& setSummary()
&&&&&&&&&&&& getText()&&&&&&&&&&&setText()
&&&&& getXXX()代表取得xxx属性的值。
& 一个简易的效果图如下:
&Preference的跳转:
&&&&&方法一:在配置每个Preference元素节点时,我们可以显示为点击它时所跳转的Intent。点击该Preference,跳转至目标Intent。除非在onPreferenceTreeClick()方法中进行抉择。在xml中配置如下:
[java]&view
plaincopyprint?
&&&& 方法二:可以在onPreferenceTreeClick()创建新的intent显示的进行跳转。
&&接下来,对每个Preference的的独有XML Attributes和方法进行一下总结,使大家有更好的深入理解。
&&&&&&&1、EditPreference&
&&&&&&&&&&& 方法:
&&&&&&&&&&&&&& getEditText()& 返回的是我们在该控件中输入的文本框值
&&&&&&&&&&&&&& getText()&&&& 返回的是我们之前sharedPreferen文件保存的值
&&&&&&&&&&& 效果图:
&&&&&&&&&&&&&&&&&&& &
&&&&&&&&2、ListPreference
&&&&&&&&&&XML Attributes:
&&&&&&&&&&&&&&android:dialogTitle:弹出控件对话框时显示的标题
&&&&&&&&&&&&&&android:entries:类型为array,控件欲显示的文本
&&&&&&&&&&&&&&android:entryValues:类型为array,与文本相对应的key-value键值对,value保存至sharedPreference文件
&&&&&&&&&&&&& 说明:entries和entryValue属性使用的数组为定义在资源文件arrays.xml的数组名:
&&&&&&&&& 方法:
&&&&&&&&&&&& &CharSequence[]&&&&getEntries():
返回的是控件显示文本的一个”key”数组,对应于属性android:entries
&&&&&&&&&&&&&&CharSequence[]&&&&getEntryValues():返回的一个”value”数组,对应于属性android:
entryValues
&&&&&&&&&&&&&&CharSequence&&&&&&getEntry():
返回当前选择文本
&&&&&&&&&&&&&&&&String&&&&&&&&&
getValue() :返回当前选中文本选中的value 。
&&&&&&&&&& 与之对应的还有它们所对应的setXXX()方法,可以参考SDK进行分析。效果图:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&采用的数组为:&&&&&&
[java]&view
plaincopyprint?
&&&&&&&3、RingtonePreference
&&&&&&&&&&&& XML Attributes:
&&&&&&&&&&&&&android:ringtoneType:响铃的铃声类型,主要有:ringtone(音乐)、notification(通知)、alarm(闹铃)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 、all(所有可用声 音类型)。
&&&&&&&&&&&&&&&android:showDefault&:默认铃声,可以使用系统(布尔值---true,false)的或者自定义的铃声
&&&&&&&&&&&&&&&android:showSilent&
:指定铃声是否为静音。指定铃声包括系统默认铃声或者自定义的铃声
&&&&&&&&&效果图:
&&&&&&&&&&&&&&& &
&重点:分析Preference事件
&& ★在PreferenceActivity方法中,一个比较重要的监听点击事件方法为:
&&&&&&&& public booleanonPreferenceTreeClick (PreferenceScreen preferenceScreen, Preference preference)
&&&&&&&&&&&&&&&&&&&&&&&& &&说 明 :&当Preference控件被点击时,触发该方法。
&&&&&&&&&& 参数说明: preference&& 点击的对象。
&&&&&&&&&& 返回值:&& true& 代表点击事件已成功捕捉,无须执行默认动作或者返回上层调用链。 例如,不跳转至默认Intent。
&&&&&&&&&&&&&&&&&&&&&&false 代表执行默认动作并且返回上层调用链。例如,跳转至默认Intent。
&&&& &在我们继承PreferenceActivity的Activity可以重写该方法,来完成我们对Preference事件的捕捉。
&&&& 相信通过前面的介绍,你一定知道了如何使用了Preference家族并且对其触发方法。下面我们抛出另外两枚炸弹——
Preference相关的两个重要监听接口。
&& ★&&Preference.OnPreferenceChangeListener&&&& 该监听器的一个重要方法如下:
&&&&&&&&boolean onPreferenceChange(Preference&preference,Object&objValue)
&&&&&&&&&&&& 说明:& 当Preference的元素值发送改变时,触发该事件。
&&&&&&&&&&&& 返回值:true& 代表将新值写入sharedPreference文件中。
&&&&&&&&&&&&&&&&&&&& false 则不将新值写入sharedPreference文件
&&★&&&Preference.OnPreferenceClickListener&&&&& 该监听器的一个重要方法如下:
&&&&&&&&&public booleanonPreferenceClick(Preference preference)
&&&&&&&&&&&& 说明:当点击控件时触发发生,可以做相应操作。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&& 那么当一个Preference控件实现这两个接口时,当被点击或者值发生改变时,触发方法是如何执行的呢?事实上,
&它的触发规则如下:
&&&&& 1&先调用onPreferenceClick()方法,如果该方法返回true,则不再调用onPreferenceTreeClick方法 ;
&&&&&&&如果onPreferenceClick方法返回false,则继续调用onPreferenceTreeClick方法。
&&&&& 2&onPreferenceChange的方法独立与其他两种方法的运行。也就是说,它总是会运行。
& & &&补充:点击某个Preference控件后,会先回调onPreferenceChange()方法,即是否保存值,然后再回&&&& & & & &调onPreferenceClick以及onPreferenceTreeClick()方法,因此在onPreferenceClick/onPreferenceTreeClick
&方法中我们得到的控件值就是最新的Preference控件值。
& 那么,开始我们的实战之旅吧! 下面给您最火热的战场。
&&& 1,新建我们的preference.xml文件。
&&&&&&&&&① 在res文件夹下,新建xml文件夹。
&&&&&&&&&② 在新建的xml文件夹下,新建Android XML File。命名为mypeference.xml 。类型选择为Preference。
&&&&&&&&&③&打开我们的mypeference.xml,视图选择Structure。可以手动配置我们的布局文件。可选的Preference空间如下:
&&&&&&&&&&&&&&&
&&&Demo中mypeference.xml的布局文件如下:&
[java]&view
plaincopyprint?
&&& 2,新建一个HelloActivity继承PreferenceActivity,代码如下:&&&
[java]&view
plaincopyprint?
&&&&&&&&&3,AndroidManifest 文件如下:
[java]&view
plaincopyprint?
&&&&&& 程序运行后,效果如上所示,是不是很给力呀!&
sharedPreference文件
& &&&&前面我们说过,Android系统会将Preference元素的值存储在sharedPreference文件中。该文件存放路径位于
DDMS视图下的data/data/[packgename]/shared_prefs/文件下,命名约定为:packagename_preferencse.xml。
&我们的com.feixun.qin_preferences.xm保存的值为:
[java]&view
plaincopyprint?
&&&&已一个键值对的形式保存,name为Preference的key值,value为Preference的value值。
&在应用程序中,我们可以通过代码的方式来访问该sharedPreference文件,继而可以对其进行读取甚至任何操作。
&&&&& 代码如下:&
[java]&view
plaincopyprint?
PreferenceFragment的使用
转自:http://blog.csdn.net/eyu8874521/article/details/8250611
相信大家对Perference都比较熟悉了,也就是我们常说的偏好设置,首选项设置,可以保存一些数据,例如我们在上一次使用的时候的一些内容,希望在下一次启动后依然生效,而不需要再进行配置那么麻烦。一般这个时候我们便会使用perference键值对的方式来处理,在android3.0之前,我们一般去继承Preference这个基类去给用户呈现一个可以设置的界面,其中的layout需要自己编写,今天我们研究的是3.0之后使用碎片技术的首选项配置方法,即使用PreferenceFragement来实现。
&--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public abstract class PreferenceFragment extends Fragment
以一个列表来展示首选项对象的层级关系,这些首选项将自动地保存为SharedPreferences,使用户可以用他们来进行交互。为了能够重新获得ShaedPreferences的实例,该Fragement中的层级首选项将会在同一个包下面使用带有一个上下文的PreferenceManager.getDefaultSharedPreferences作为这个fragement 。
此外,所展示的首选项将会遵循系统首选项的视觉风格,通过使用XML文件来创建各个首选项的视图层级(可以被显示在许多页面)会非常简单。基于上述原因,推荐在应用中使用这个fragement(作为一个超类)来处理首选项问题。
一个PreferenceScreen对象应该在首选项层级的顶部。此外,随后在层次结构PreferenceScreen表示一个屏幕分割处——就是包含随后的PreferenceScreen应显示在另一个屏幕页面上。首选项框架处理从首选项层次结构显示了这些其他屏幕内容。
首选项层次结构可以有很多种方式形成:
●从一个XML文件制定的层次结构。
●从不同的activity,每一个activity通过meta-data在一个XML文件中制定他自己的首选项。
●从一个以PreferenceScreen为根的层次结构对象。
为了从一个XML文件中获取界面,使用addPreferenceFromResource(int)方法。根元素应该使用PreferenceScreen。随后的元素可以指向实际的首选项的子类。正如上面提到的,在层次结构中随后的PreferenceScreen将导致屏幕分割处。
为了指定一个意图来查询都带有各自首选项的activitiy,使用addPreferenceFromIntent方法。每个activity可以在manifest文件中指定meta-data来指向一个XML文件资源。这些资源文件将被填充到单独的首选项层次结构并且通过这个fragment来展示。
为了指定一个以PreferenceScreen为根元素的对象,使用setPreferenceScreen(PreferenceScreen)方法。
方便起见,这个fragment实现了一个用于当前层次结构中任意首选项的点击事件监听器,onPreferenceTreeClick(PreferenceScreen,Preference).
以上翻译自PreferenceFragment的官方文档,可自行查阅其原版说明
----------------------------------------------------------------------------------------------------------------------------------------
根据官方文档的说明以及自带的APIdemo中的例子,我自己使用PreferenceFragment写了一个例子,效果与之前使用继承PreferenceActivity差不多,步骤如下:
①创建一个工程
②在MainAcitivity中添加菜单按钮及对应效果
[java]&view
③在res文件夹下面新建一个xml文件夹,在里面新建一个preferences.xml文件
[html]&view
④FragmentPreferences.java的代码部分
[java]&view
最后是运行之后的效果截图:
&&&&&&&&&&&&&&&&&&&&&&&&
大致对PreferenceFragment的学习使用就是这样啦,以后在高版本上面开发的时候可以考虑这种方式。
注明:本文章属于转载,仅供行业人员学习交流使用,文章版权属于原创作者,在此向原创者致敬,感谢原创作者为大家学习交流提供精品内容。
站方声明:IThao123是为广大互联网从业者免费提供学习交流的平台,如果侵犯了原创著作权,请联系站方删除,给你带来不便,深表歉意。Android中PreferenceFregment使用完全攻略_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Android中PreferenceFregment使用完全攻略
来源:Linux社区&
作者:silangquan
如果你从搜索引擎找到这篇《中PreferenceFregment使用完全攻略》文章,那么恭喜你,你来对地方了。我可以很负责任的告诉你,在这篇文章之前,没有一篇完整叙述PreferenceFregment使用的完整文章。
在Android的应用中通常都有setting功能,能够设置一些全局的选项,例如字体颜色,个人喜好等等。
这些东西都是存在一个xml中的,在android中对应的对象就是SharedPreferences。
本文全部源码下载:
用户名:www.6688.cc
在 2013年\9月\Android中PreferenceFregment使用完全攻略
下载方法见
---------------------------------分割线---------------------------------
下面就是一个完整使用PreferenceFregment的例子,先看结果:
PreferenceFragment 还是 PreferenceActivity
很明显PreferenceFragment 是Fregment, PreferenceActivity是Activity。
当你的应用针对的系统在3.0以上的时候,你就应该用PreferenceFragment,现在主流系统4.0的情况下,当然选择使用PreferenceFragment。原因是PreferenceFragment是一个更加平滑的结构,你可以将它依附在任何的activity上面,谷歌强力推荐使用PreferenceFragment!
常用Preference
CheckPreference && CheckBox 单选框
EditTextPreference && EditText 输入文本框
ListPreference && ListView 列表框
RingtonePreference && 选择铃声
XML定义常用的属性有:
android:key : 每个Preference控件独一无二的&ID&,唯一表示此Preference。
android:defaultValue : 默认值。 例如,CheckPreference的默认值可为&true&,默认为选中状态;
EditTextPreference的默认值可为&110& 。
android:enabled : 表示该Preference是否可用状态。
android:title : 每个Preference在PreferenceScreen布局上显示的标题&&大标题
android:summary : 每个Preference在PreferenceScreen布局上显示的标题&&小标题(可以没有)
ListPreference中:
android:entries:类型为array,控件欲显示的文本
android:entryValues:类型为array,与文本相对应的key-value键值对,value保存至sharedPreference文件
PreferenceFragment 使用步骤
1.定义preference
在项目的res/xml中新建一个preferences.xml.用于定义菜单界面的设置选项:
&PreferenceScreen& & & & xmlns:android=""&
& & &PreferenceCategory& & & & & & android:title="PreferenceCategory A"&
& & & & &CheckBoxPreference& & & & & & & & android:key="checkbox_preference"& & & & & & & & android:title="title_checkbox_preference"& & & & & & & & android:summary="summary_checkbox_preference" /&
& & &/PreferenceCategory&
& & &PreferenceCategory& & & & & & android:title="PreferenceCategory B"&
& & & & &EditTextPreference& & & & & & & & android:key="edittext_preference"& & & & & & & & android:title="title_edittext_preference"& & & & & & & & android:summary="null"& & & & & & & & & android:dialogTitle="dialog_title_edittext_preference"& & & & & & & & android:defaultValue="null" /&
& & & & &ListPreference& & & & & & & android:dialogTitle="Choose font"& & & & & & & android:entries="@array/pref_font_types"& & & & & & & android:entryValues="@array/pref_font_types_values"& & & & & & & android:key="list_preferenc"& & & & & & & android:summary="sans"& & & & & & & android:title="Font" & & & & & & android:defaultValue="sans"/& & & &/PreferenceCategory&
&/PreferenceScreen&
android:entries 和 android:entryValues 定义在res/values/strings.xml中
& & &string name="app_name"&AndroidPreferenceFragment&/string&& & &string name="hello_world"&Hello world!&/string&& & &string name="menu_settings"&Settings&/string&& & &string name="title_activity_main"&MainActivity&/string&& & & & &string-array name="pref_font_types"&& & & & &item&sans&/item&& & & & &item&serif&/item&& & & & &item&monospace&/item&& & & & &item&Yahei&/item&& & &/string-array&& & &string-array name="pref_font_types_values"&& & & & &item&sans&/item&& & & & &item&serif&/item&& & & & &item&monospace&/item&& & & & &item&Yahei&/item&& & &/string-array&
推荐阅读:
Android Preference存取数据 &
Android开发教程:数据存取之Preference浅析
Android Preference Framework&
Android中Preference的使用
Android之首选项相关 Preferences(一)
Android之首选项相关 Preferences(二)
继续阅读本文的精彩内容请看第2页:
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在???站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
曾经,我擅长使用SG551
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
在fragment内的代码像在activity的写法几乎没有差别,一直很顺利,直到——无法直接 &getSharedPreferences(CFG,0) ?!android.app.Fragment 不是是继承的Activity 的么?类似情况也在其他需要传递Context的方法上出现。解决方法...超简单getActivity().getSharedPreferences(CFG,0);参考: /1188729/archive/18266.html
阅读(9823)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_094',
blogTitle:'Android笔记: 在fragment中调用SharedPreferences',
blogAbstract:'做一个分页效果,遵循android4.x SDK的建议不用tabhost 而是改用fragment在fragment内的代码像在activity的写法几乎没有差别,一直很顺利,直到——无法直接 &getSharedPreferences(CFG,0) ?!android.app.Fragment 不是是继承的Activity 的么?类似情况也在其他需要传递Context的方法上出现。解决方法...超简单getActivity().getSharedPreferences(CFG,0);参考: /1188729/archive/18266.html',
blogTag:'fragment,activity,context',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:4,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:5,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'曾经,我擅长使用SG551',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 fragment tag如何使用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信