首选项就是存储软件的配置信息。

在window系统中是以 ini为后缀,然而在android中就是以 xml为后缀。

这次讲首选项以编写一个登入之后记住密码为例。

布局:activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="cn.huse.edu.sp.MainActivity" ><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="用户名" /><EditTextandroid:id="@+id/et_name"android:layout_width="match_parent"android:layout_height="wrap_content" /><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="密码" /><EditTextandroid:id="@+id/et_pwd"android:password="true"android:layout_width="match_parent"android:layout_height="wrap_content" /><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><CheckBox android:id="@+id/cb_remeber"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="记住密码"/><CheckBox android:id="@+id/cb_autologin"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="自动登入"/></LinearLayout><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Button android:id="@+id/bt_register"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="注册"/><Button android:id="@+id/bt_login"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="登入"/></LinearLayout></LinearLayout>

MainActivity.java

package cn.huse.edu.sp;import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends Activity {private EditText et_name;private EditText et_pwd;private CheckBox cb_remeber;private CheckBox cb_autologin;private SharedPreferences sp;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取首选项sp = getSharedPreferences("login", Context.MODE_PRIVATE);//初始化函数initView();//回显数据boolean remeberpwd = sp.getBoolean("remeberpwd", false);boolean autologin = sp.getBoolean("autologin", false);//记住密码if(remeberpwd){//获取用户名和密码String name = sp.getString("name", "");String pwd = sp.getString("pwd", "");et_name.setText(name);//将光标放到字符最后面et_name.setSelection(name.length());et_pwd.setText(pwd);et_pwd.setSelection(pwd.length());//将记住密码勾选上cb_remeber.setChecked(true);}if(autologin){//将自动登入勾选上cb_autologin.setChecked(true);Toast.makeText(this, "自动登入......", 1).show();}}private void initView() {//找到控件et_name = (EditText) findViewById(R.id.et_name);et_pwd = (EditText) findViewById(R.id.et_pwd);cb_remeber = (CheckBox) findViewById(R.id.cb_remeber);cb_autologin = (CheckBox) findViewById(R.id.cb_autologin);Button bt_register = (Button) findViewById(R.id.bt_register);Button bt_login = (Button) findViewById(R.id.bt_login);//监听事件MyOnClickListener l = new MyOnClickListener();//为按钮添加监听bt_register.setOnClickListener(l);bt_login.setOnClickListener(l);}private class MyOnClickListener implements OnClickListener{@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_register://注册按钮事件break;case R.id.bt_login://登入//获取用户名和密码String name = et_name.getText().toString().trim();String pwd = et_pwd.getText().toString().trim();if(TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)){//用户名或密码为空Toast.makeText(MainActivity.this, "用户名或密码为空", 0).show();return;}else{if(cb_remeber.isChecked()){//勾选了记住密码 保存用户名和密码在首选项中Editor edit = sp.edit();    //编辑器edit.putBoolean("remeberpwd", true);edit.putString("name", name);edit.putString("pwd", pwd);//保存之后必须提交edit.commit();}if(cb_autologin.isChecked()){//勾选自动登入Editor edit = sp.edit();edit.putBoolean("autologin", true);edit.commit();}}break;}}}
}

运行后结果截图:

再次运行后结果截图:

所有说,我们可以利用首选项实现qq的自动登入和记住密码这两个功能的。

Android基础--首选项(SharedPreferences)相关推荐

  1. android实例教程_Android共享首选项示例教程

    android实例教程 In this tutorial we'll use Shared Preferences in our android application to store data i ...

  2. 详解Android首选项框架ListPreference

    探索首选项框架 在深入探讨Android的首选项框架之前,首先构想一个需要使用首选项的场景,然后分析如何实现这一场景.假设你正在编写一个应用程序,它提供了一个搜索飞机航班的工具.而且,假设该应用程序的 ...

  3. SD卡读写,首选项,共享首选项

    Android-SD卡读写 adb shell mksdkcard 50m d:\xxx\xxxx.img 挂载/卸载sd卡 <uses-permission android:name=&quo ...

  4. 如何在“首选项”摘要中显示Android首选项的当前值?

    这必须经常出现. 当用户在Android应用程序中编辑首选项时,我希望他们能够在Preference摘要中查看首选项的当前设置值. 示例:如果我有"丢弃旧邮件"的"首选项 ...

  5. android listpreference 自定义,Android中Fragmen首选项使用自定义的ListPreference的方法

    首选项这个名词对于熟悉Android的朋友们一定不会感到陌生,它经常用来设置软件的运行参数. Android提供了一种健壮并且灵活的框架来处理首选项.它提供了简单的API来隐藏首选项的读取和持久化,并 ...

  6. android 类对象的存储,android - 以共享首选项存储和检索类对象

    android - 以共享首选项存储和检索类对象 在Android中,我们可以在共享首选项中存储类的对象,并在以后检索该对象吗? 如果有可能怎么办? 如果不可能做到这一点的其他可能性是什么? 我知道序 ...

  7. Android 首选项框架及PreferenceScreen,PreferenceActivity,PreferenceFragment的用法与分析

    前言 <Android 4 高级编程(第3版)>第7章第5节讲到了首选项框架和PreferenceActivity概述等内容,因为第一次见到PreferenceScreen,还没用过,所以 ...

  8. android 首选项框架,Android:创建自定义首选项

    婷婷同学_ 这就是我使用支持库的方法preference-v7.扩展 Preference和覆盖onBindViewHolder().此方法使您可以通过ViewHolder对象获取对首选项视图的引用. ...

  9. Android基础入门教程——2.4.10 Spinner(列表选项框)的基本使用

    Android基础入门教程--2.4.10 Spinner(列表选项框)的基本使用 标签(空格分隔): Android基础入门教程 本节引言: 本来本节是想给大家介绍一个Gallery(画廊)的一个控 ...

最新文章

  1. Java 打印数组的方法
  2. “智能”基石:人工智能数据标注与训练,是决定智能时代的第一步
  3. Qt中关于undefined reference to `vtable for故障总结
  4. [转载]Ubuntu安装配置Mysql
  5. html iframe php,html iframe使用的实战总结分享
  6. linux解压tz zip,TZ 文件扩展名: 它是什么以及如何打开它?
  7. sql 列求和_图解面试题:累计求和问题如何分析?
  8. java pdf 工具_Java_iText_PDF—生成PDF工具
  9. getContentResolver()内容解析者查询联系人、插入联系人
  10. 测试打印机性能的软件,打印机检测软件Printer Check
  11. python制作动态的微信个人名片
  12. 阿里云大学:百度贴吧自动签到实现
  13. 光明勇士iOS服务器维护,裕际网络科技《光明勇士》3月11日 iOSamp;安卓部分区服数据互通公告 - 热门手游公告-TK游戏...
  14. 鸿蒙也是基于linux吗,鸿蒙系统是基于linux开发的吗
  15. JVM - 进入Java虚拟机的真实世界
  16. [EMNLP 2022] VIRT: Improving Representation-based Text Matching via Virtual Interaction
  17. 2020IT从业者如何找到高薪工作
  18. 解决报错:The Module Root specified is not a module according to Intellij
  19. 16进制颜色代码大全
  20. flappy+bird+c语言程序,C语言实现flappy bird游戏

热门文章

  1. python3 项目开发-中级篇(二)
  2. compiti delle vacanze 暑假作业
  3. python中三引号是什么意思_python中三个单引号是什么意思
  4. 初识OFDM(八):OFDM中的PAPR计算和通频带仿真
  5. 笔记本电脑显示rpc服务器不可用,Win7电脑RPC服务器不可用怎么办 RPC服务器不可用解...
  6. Deepin 15.11下载安装新版 QQ Linux
  7. 小米平板4能装Linux系统吗,还在考虑小米平板4要不要入手?看完这十个问题你就有答案了...
  8. 【模型评价指标】分析模型评价常用指标
  9. 解析肖特基二极管的优缺点及应用
  10. 七月算法机器学习笔记9 推荐系统