偏好设置(2)偏好设置界面用PreferenceFragment或PreferenceActivity

android应用各参数或配置是用SharedPreference存储管理的,但是它没有界面,如果想用界面,

系统在3.0以上用PreferenceFragment(推荐用它),以下用PreferenceActivity

它们默认有listview显示各配置项,给它们指定一个配置xml文件就可.

下面是示例,它们用相同的xml.

1.效果

2.配置xml: res/xml/my_preference.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <CheckBoxPreference
        android:key="checkbox"
        android:title="是否开启"
        android:summaryOn="开启"
        android:summaryOff="关闭"
        />

    <!-- entries是ListPreference列表项 ,entryValues指定列表项对应的各值-->
    <ListPreference
        android:key="list"
        android:title="请选择一个选项"
        android:summary="请点击选择"
        android:entries="@array/preference_entries"
        android:entryValues="@array/preference_values"
        />
    <EditTextPreference
        android:key="text"
        android:title="请输入"
        android:dialogTitle="请输入名字"
        android:dialogMessage="有劳了"
        android:summary="请再次输入"/>

</PreferenceScreen>

其中用到了list.下面是这个 list各item与各item对应的值. res/values/my_preference.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="preference_entries">
        <item >Java</item>
        <item >C++</item>
        <item >Assume</item>
    </string-array>
    <string-array name="preference_values">
        <item >eclipse</item>
        <item >visual studio</item>
        <item >notepad++</item>
    </string-array>

</resources>

3.PreferenceFragment.java

import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.widget.Toast;

public class MyPreferenceFrgment extends PreferenceFragment {

    PreferenceManager prefernceMgr;
    CheckBoxPreference checkPreference;
    ListPreference listPreference;
    EditTextPreference editPreference;

    /*
     * 读取各属性
     */
    void readPreference() {
        Toast.makeText(getActivity(), "当前选中状态为:" + checkPreference.isChecked(),
                0).show();
        Toast.makeText(
                getActivity(),
                "当前选中的列表项为:" + listPreference.getEntry() + "当前选中的列表项的值为:"
                        + listPreference.getValue(), 1).show();
        Toast.makeText(getActivity(),
                "当前选中的列表项为:" + "输入的内容为:" + editPreference.getText(), 1).show();
    }
    void init() {
        addPreferencesFromResource(R.xml.my_preference);//关键代码
        prefernceMgr = getPreferenceManager();
        checkPreference = (CheckBoxPreference) prefernceMgr
                .findPreference("checkbox");//checkbox是在xml中定义的android:key
        listPreference = (ListPreference) prefernceMgr.findPreference("list");
        editPreference = (EditTextPreference) prefernceMgr
                .findPreference("text");
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        init();
    }
//    @Override
//    public View onCreateView(LayoutInflater inflater, ViewGroup container,
//            Bundle savedInstanceState) {
//        //注意,如果指定自己的layout,那么该layout必有listview
//        View v = inflater.inflate(R.layout.frgmt_perference, container, false);
//        return v;
//    }
}

4.MyPreferenceActivity.java

import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.RingtonePreference;
import android.widget.Toast;

public class MyPreferenceActivity extends PreferenceActivity {

    PreferenceManager prefernceMgr;
    /*
     * PreferenceActivity主要使用的就是下面几个子preference
     */
    CheckBoxPreference checkPreference;
    ListPreference listPreference;
    EditTextPreference editPreference;
    RingtonePreference rp;

    /*
     * 读取各属性
     */
    private void readPreferences() {

        Toast.makeText(getApplicationContext(),
                "当前选中状态为:" + checkPreference.isChecked(), 0).show();
        Toast.makeText(
                getApplicationContext(),
                "当前选中的列表项为:" + listPreference.getEntry() + "当前选中的列表项的值为:"
                        + listPreference.getValue(), 1).show();
        Toast.makeText(getApplicationContext(),
                "当前选中的列表项为:" + "输入的内容为:" + editPreference.getText(), 1).show();
    }

    private void init(){

        //指定偏好设置的xml文件既可,不用在指定layout文件,PreferenceActivity用listview显示各偏好
        addPreferencesFromResource(R.xml.my_preference);
        prefernceMgr = getPreferenceManager();

        checkPreference = (CheckBoxPreference) prefernceMgr
                .findPreference("checkbox");//checkbox是在xml中定义的android:key
        listPreference = (ListPreference) prefernceMgr.findPreference("list");
        editPreference = (EditTextPreference) prefernceMgr
                .findPreference("text");
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        init();
    }
}
时间: 2024-10-20 11:56:46

偏好设置(2)偏好设置界面用PreferenceFragment或PreferenceActivity的相关文章

设置Delphi XE4默认界面样式

VCL BitMap Style Proceject Options->Application->Appearance 选择几个样式 使用代码设置 uses Vcl.Themes;procedure TForm1.Button1Click(Sender: TObject);begin    TStyleManager.TrySetStyle('Amakrits');end; XE4默认皮肤列表 Windows Amakrits Amethyst Kamri Aqua Graphite Aqua

ubuntu设置开机默认进入界面及命令行下开启图像界面

前言 环境:ubuntu12.04 一. ubuntu设置默认开机界面 在网上查看了好几种方法,对于当前环境方便或者有用的方式是对/etc/default/grub文件进行设置. 1.默认开机命令行界面 file: /etc/default/grub文件中 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"替换为GRUB_CMDLINE_LINUX_DEFAULT="text" 更新grub.cfg $sudo update-grub

AnyChat for Web SDK支持设置本地图片为界面背景

从AnyChat r4092版本开始,AnyChat for Web SDK支持设置本地图片为界面背景.<IGNORE_JS_OP style="WORD-WRAP: break-word"> 如果需要改变默认的“AnyChat”背景,则可以通过API接口:SetBkImage来设置,参考:http://bbs.anychat.cn/forum.php? ... =172&extra=page%3D2 早期的版本只支持网络路径(如:http://www.anycha

vscode用户设置与工作区设置

用户设置与工作空间设置 VS Code提供了两种设置方式: - 用户设置: 这种方式进行的设置,会应用于该用户打开的所有工程:- 工作空间设置:工作空间是指使用VS Code打开的某个文件夹,在该文件夹下会创建一个名为.vscode的隐藏文件夹,里面包含着仅适用于当前目录的VS Code的设置,工作空间的设置会覆盖用户的设置. 每个人都有自己的偏好,在使用VS Code进行开发时,都会根据自己的习惯来对VS Code进行用户级别的配置.但是当多人共同完成某个项目的时候,该项目会有一定的编码规范,

Tomcat(tomcat虚拟主机,Tomcat日志,单机多实例配置实战,JVM设置和连接数设置)

一.配置Tomcat的虚拟主机 一.Tomcat虚拟主机基本配置. 在介绍nginx和apache的时候,我们都有提过虚拟主机,在tomcat中也有这么一说, [[email protected] ~]# vim /usr/local/tomcat/conf/server.xml 搜索/Host,其中<Host>和</Host>之间的配置为虚拟主机配置部分,name定义域名,appBase定义应用的目录,Java的应用通常是一个Jar的压缩包,将jar的压缩包放到appBase目录

关于UITextFiled,UIlabel,UIBUtton相关设置,边框设置和字体设置

设置账号,密码字体的颜色 NSMutableDictionary *dict = [NSMutableDictionary dictionary]; dict[NSForegroundColorAttributeName] = [ICETools colorWithHexString:@"C1C0C2"]; NSAttributedString *attribute = [[NSAttributedString alloc] initWithString:self.accountTex

JavaScript设置获取和设置属性的方法

这篇文章主要介绍了JavaScript设置获取和设置属性的方法,学会使用getAttribute.setAttribute的用法,需要的朋友可以参考下 getAttribute 该方法用来获取元素的属性,调用方式如下所示: 复制代码代码如下: object.getAttribute(attribute) 以此前介绍的一些方法不同,getAttribute方法不属于document对象,所以不能通过document对象调用.它只能通过元素节点对象来调用. 该方法只接受一个参数,你指定要查询的属性的

一.ubuntu14.04安装、亮度设置、显卡设置等一体化讲解

一.ubuntu14.04安装 安装步骤很简单的,相信你只要知道并且决定安装ubuntu,你就不会在安装上有问题,下载网址 http://www.ithome.com/html/soft/81539.htm.下载iso后我使用u盘刻录的,刻录用的软件是ultro,这个不说. 二.安装上之后,屏幕亮度很亮,并且无法调节,而且风扇狂转,声音很大,这是由于ubuntu初始默认设置和显卡切换问题. 1.调节亮度 打开终端黑窗口,快捷启动ctrl+alt+t,另外装上ubuntu后需要设置root,因为安

BIOS设置和CMOS设置的区别与联系

BIOS是主板上的一块EPROM或EEPROM芯片,里面装有系统的重要信息和设置系统参数的设置程序(BIOS Setup程序): CMOS是主板上的一块可读写的RAM 芯片,里面装的是关于系统配置的具体参数,其内容可通过设置程序进行读写. CMOS RAM 芯片靠后备电池供电,即使系统掉电后信息也不会丢失. BIOS与CMOS既相关又不同: BIOS中的系统设置程序是完成CMOS参数设置的手段: CMOS RAM既是BIOS设定系统参数的存放场所,又是 BIOS设定系统参数的结果. 因此,完整的