随笔 - 62  文章 - 0  评论 - 114  阅读 - 18万

android preferenceActivity的用法

首先让大家看图  看到这张图是 不是很熟悉 我想大家应该会好奇他是怎么实现  咋一看是不是觉得实现起来有点困难 因为各个按钮之间会绑定牵连在一起
原来android内部提供更容易的实现他的方法
也就是preferenceActivity该类封装了sharedpreferences所以他的所有子类都具有保存key-value对的能力

比较常用的设置项 有三类:

1、checkboxpreferences

2、edittextpreferences

3、listviewpreferences

好了 直接看列子吧

分2步:

1、在res目录下建一个xml目录  并在该目录下新建一个preferences_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:summary="使用无线网络查看应用程序(例如Google地图)中的位置"
            android:title="使用无线网络" />
        <CheckBoxPreference
            android:key="gps_satellite_setting"
            android:summary="定位时,精确到街道级别(取消选择可节约电量)"
            android:title="启用GPS卫星设置" />
    </PreferenceCategory>
    <PreferenceCategory android:title="个人信息设置" >
        <CheckBoxPreference
            android:key="yesno_save_individual_info"
            android:title="是否保存个人信息" />
 
        <EditTextPreference
            android:key="individual_name"
            android:summary="请输入真实姓名"
            android:title="姓名" />
 
        <PreferenceScreen
            android:key="other_individual_msg"
            android:summary="是否工作、手机"
            android:title="其他个人信息" >
            <CheckBoxPreference
                android:key="is_an_employee"
                android:title="是否工作" />
 
            <EditTextPreference
                android:key="mobile"
                android:summary="请输入真实的手机号"
                android:title="手机" />
        </PreferenceScreen>
    </PreferenceCategory>
 
</PreferenceScreen>
复制代码

2 、java文件:

复制代码
package net.blogjava.mobile;
 
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
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);
                 
 
        }
 
        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);
        }
}
复制代码

 

 

 

 

posted on   nuliniao  阅读(883)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2013年1月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

点击右上角即可分享
微信分享提示