android 设置类PreferenceActivity

android 设置类PreferenceActivityPreferenceAc 是 android 提供的对系统信息和配置进行自动保存的 Activity 它通过 SharedPrefer 方式将信息保存在 XML 文件当中 使用 PreferenceAc 不需要我们对 SharedPrefer 进行信息保存读取操作 系统会自动对 Activity 的各种 View 上的改变进行保存 nbsp nbsp nbsp 可以自己实现一个 但是那样又会使 A

       PreferenceActivity是android提供的对系统信息和配置进行自动保存的Activity,它通过SharedPreference方式将信息保存在XML 文件当中。使用PreferenceActivity不需要我们对SharedPreference进行信息保存读取操作,系统会自动对Activity 的各种View上的改变进行保存()。


    可以自己实现一个,但是那样又会使Activity中的逻辑代码和xml布局文件过于复杂,远远不及PreferenceActivity来的方便快捷。

     用他来自定义设置,省去了我们通过对SharedPreference设置的保存读取,很方便。PreferenceActivity在每次退出后都会自动记录下当前页面的设置,下次启动时会自动加载

这是根据hack004修改来的

一、效果图:

android 设置类PreferenceActivity


二、部分自定义实现类

自定义Prefeference

 把view的点击事件传递给ImagePreference

package com.manning.androidhacks.hack004.preference; import com.manning.androidhacks.hack004.R; import android.content.Context; import android.preference.Preference; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; public class ImagePreference extends Preference { private ImageView iv_perference_icon; private int _id; // 声明监听器 private OnClickListener mOnClickListener; public ImagePreference(Context context, int id) { super(context); // TODO Auto-generated constructor stub this._id = id; setLayoutResource(R.layout.preference_list_item_layout); } @Override protected void onBindView(View view) { // TODO Auto-generated method stub super.onBindView(view); if (iv_perference_icon == null) { iv_perference_icon = (ImageView) view.findViewById(R.id.iv_perference_icon); iv_perference_icon.setImageResource(_id); view.setClickable(true); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { if (mOnClickListener != null) // 把view的点击事件传递给ImagePreference mOnClickListener.onClick(view); else return; } }); } } // 设置ImagePreference的监听方法 public void setOnClickListener(OnClickListener mOnClickListener) { this.mOnClickListener = mOnClickListener; } }

三、主类;

import com.manning.androidhacks.hack004.preference.ImagePreference; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.net.Uri; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Toast; //MainActivit继承PreferenceActivity,其是ListActivity的子类 public class MainActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置背景 this.getListView().setBackgroundResource(R.drawable.backgroud); addPreferencesFromResource(R.xml.prefs); initImagePreference(); Preference sharePref = findPreference("pref_share"); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Check this app!"); shareIntent.putExtra(Intent.EXTRA_TEXT, "Check this awesome app at: ..."); sharePref.setIntent(shareIntent); Preference ratePref = findPreference("pref_rate"); Uri uri = Uri.parse("market://details?id=" + getPackageName()); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); ratePref.setIntent(goToMarket); updateUserText(); } private void initImagePreference() { getPreferenceScreen().setOrderingAsAdded(true); ImagePreference pre_update = new ImagePreference(this, R.drawable.update); // pre_update.setKey(Intents.KEY_UPDATE); pre_update.setTitle("更新"); pre_update.setOrder(4); pre_update.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // You can do something here when somebady click this view. Toast.makeText(MainActivity.this, "版本升级", 1).show(); } }); getPreferenceScreen().addPreference(pre_update); } @Override protected void onResume() { super.onResume(); getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override protected void onPause() { super.onPause(); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals("pref_username")) { updateUserText(); } } private void updateUserText() { EditTextPreference pref; pref = (EditTextPreference) findPreference("pref_username"); String user = pref.getText(); if (user == null) { user = "请填写你的用户名"; } pref.setSummary(String.format("Username: %s", user)); } }

五、布局文件:

 
   
   
    
     
    
    
     
     
     
     
    
   

AboutDialog,EmailDialog为自定义控件

六、源码:


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177510.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午7:21
下一篇 2026年3月26日 下午7:21


相关推荐

  • Java多线程系列–“JUC锁”09之 CountDownLatch原理和示例

    Java多线程系列–“JUC锁”09之 CountDownLatch原理和示例概要前面对"独占锁"和"共享锁"有了个大致的了解;本章,我们对CountDownLatch进行学习。和ReadWriteLock.ReadLock一样,Coun

    2022年7月4日
    28
  • 一些世界上著名杀软的专杀工具下载地址

    一些世界上著名杀软的专杀工具下载地址一些世界上著名杀软的专杀工具下载地址from:http://forum.ikaka.com/topic.asp?board=28&artid=7302339&page=1想了解更新的内容可以直接到卡卡论坛查看。1.Bitdefenderhttp://www.bitdefender.com/site/Download/browseFreeRemovalTool能找到LovGate,Parite,N

    2022年7月25日
    22
  • java线程池springboot_springboot线程池的使用和扩展(转)「建议收藏」

    java线程池springboot_springboot线程池的使用和扩展(转)「建议收藏」实战环境windowns10;jdk1.8;springboot1.5.9.RELEASE;开发工具:IntelliJIDEA;实战源码本次实战的源码可以在我的GitHub下载,地址:git@github.com:zq2599/blog_demos.git,项目主页:https://github.com/zq2599/blog_demos这里面有多个工程,本次用到的工程为threadpoold…

    2022年6月17日
    87
  • 回溯法-经典 01背包问题

    回溯法-经典 01背包问题经典问题 给定 N 中物品和一个背包 物品 i 的重量是 Wi 其价值位 Vi 背包的容量为 C 问应该如何选择装入背包的物品 使得转入背包的物品的总价值为最大 分析 1 如上图碰到一组数据 有两种可能 选或者不选 在树种分别由 1 0 表示 2 使用递归 在遍历完 n 个数的时候 判断最终的数是否比最佳价值大 如果比最佳价值大 就把值赋给 bestv 代码 includestdio hintc 30

    2026年3月26日
    2
  • Java 中初始化 List 集合的 6 种方式!「建议收藏」

    Java 中初始化 List 集合的 6 种方式!「建议收藏」Java 中初始化 List 集合的 6 种方式!

    2022年4月21日
    50
  • window10 安装_自己安装windows10

    window10 安装_自己安装windows10AppFabric简介WindowsServerAppFabric扩展了WindowsServer以为Web应用程序和中间层服务提供增强的托管、管理和缓存功能。AppFabric托管功能向Internet信息服务(IIS)、WindowsProcessActivationService(WAS)和.NETFramework4添加了服务管理扩展。其中包

    2022年10月17日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号