SharedPreference , PreferenceActivity

本文介绍如何使用Android中的PreferenceActivity及SharedPreferences来管理应用配置。通过PreferenceActivity,开发者能够轻松创建配置界面并保存用户的个性化设置。文章还展示了PreferenceActivity的具体实现案例,包括XML配置文件和Java代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于SharedPreferences可以很容易地保存key-value对,因此通常用SharedPreferences保存配置信息,不过Android SDK提供了更容易的方法来设计配置界面,并且可以透明地保存配置信息,这就是PreferenceActivity。
PreferenceActivity是Activity的子类,该类封装了SharedPreferences,因此PreferenceActivity的所以子类都拥有保存key-value的能力。

一个标准的xml文件(xml/preference_setting.xml)如下所示:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="我的位置源">

        <CheckBoxPreference android:key="wireless_network"
            android:title="使用无线网络" android:summary="使用无线网络查看应用程序(例如Google地图)中的位置" />
        <CheckBoxPreference android:key="gps_satellite_setting"
            android:title="启用GPS卫星设置" android:summary="定位时,精确到街道级别(取消选择可节约电量)" />
    </PreferenceCategory>
    <PreferenceCategory android:title="个人信息设置">

        <CheckBoxPreference android:key="yesno_save_individual_info"
            android:title="是否保存个人信息" />
        <EditTextPreference android:key="individual_name"
            android:title="姓名" android:summary="请输入真实姓名" />
        <PreferenceScreen android:key="other_individual_msg"
            android:title="其他个人信息" android:summary="是否工作、手机">
            <CheckBoxPreference android:key="is_an_employee"
                android:title="是否工作" />
            <EditTextPreference android:key="mobile"
                android:title="手机" android:summary="请输入真实的手机号" />
        </PreferenceScreen>
    </PreferenceCategory>



</PreferenceScreen>

如果使用嵌套PreferenceScreen,则说明该设置页有一个子设置页,单击该设置页就会进入这个子设置页。
android:title和android:summary,分别表示设置项的标题和摘要,标题用大体字显示在摘要上方,摘要用小字显示。

onCreate方法并不需要设置布局文件,而只需要装载上面的xml文件即可。

addPreferencesfromResource(R.xml.preference_setting);

代码如下:

package net.blogjava.mobile;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.preference.Preference.OnPreferenceChangeListener;

public class Main extends PreferenceActivity implements
        OnPreferenceChangeListener
{
    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        //getPreferenceManager().setSharedPreferencesName("setting");
        addPreferencesFromResource(R.xml.preference_setting);
        Preference individualNamePreference = findPreference("individual_name");
        SharedPreferences sharedPreferences= individualNamePreference.getSharedPreferences();
        individualNamePreference.setSummary(sharedPreferences.getString("individual_name", ""));
        if (sharedPreferences.getBoolean("yesno_save_individual_info", false))
             individualNamePreference.setEnabled(true);
        else
             individualNamePreference.setEnabled(false);
        individualNamePreference.setOnPreferenceChangeListener(this);



    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue)
    {
        preference.setSummary(String.valueOf(newValue));        
        return true;
    }

    @Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
            Preference preference)
    {

        if ("yesno_save_individual_info".equals(preference.getKey()))
        {
            findPreference("individual_name").setEnabled(
                    !findPreference("individual_name").isEnabled());
        }
        return super.onPreferenceTreeClick(preferenceScreen, preference);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值