热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android中SharedPreference使用实例讲解

这篇文章主要介绍了Android中SharedPreference使用方法,实现登陆界面记住密码功能,感兴趣的小伙伴们可以参考一下

SharedPreference方面的内容还算是比较简单易懂的,在此还是主要贴上效果与代码,最后也是附上源码。

首先是输入账号admin,密码123,选择记住密码登陆。
登陆后就直接跳转页面。

        

随后再次打开app可以发现已经记住了密码。

如果输错了密码,或者在登陆的时候没有选择记住密码,那么会将SharedPreference的文件清空,再次登陆后又会是空的EditText。

      

MainActivity:

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.preference.PreferenceManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.Window; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.Toast; 
 
public class MainActivity extends Activity { 
 
 //使用SharedPreferences进行读取 
 private SharedPreferences pref; 
 //使用SharedPreferences.Editor进行存储 
 private SharedPreferences.Editor editor; 
 
 private Button button; 
 private CheckBox checkbox; 
 private EditText accountEdit; 
 private EditText passwordEdit; 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  //取消标题 
  requestWindowFeature(Window.FEATURE_NO_TITLE); 
  setContentView(R.layout.activity_main); 
 
  //制定SharedPreference的文件名为data 
  pref= getSharedPreferences("data",MODE_PRIVATE); 
  editor=pref.edit(); 
  accountEdit=(EditText)findViewById(R.id.account); 
  passwordEdit=(EditText)findViewById(R.id.password); 
  checkbox=(CheckBox)findViewById(R.id.remember_password); 
  button=(Button)findViewById(R.id.button); 
 
  //查看app中是否已经存储过账号密码,有的话就直接显示出来 
  boolean isRemember=pref.getBoolean("remember_password",false); 
  if(isRemember){ 
   String account=pref.getString("account",""); 
   String password=pref.getString("password",""); 
   accountEdit.setText(account); 
   passwordEdit.setText(password); 
   checkbox.setChecked(true); 
  } 
 
 
  button.setOnClickListener(new View.OnClickListener() { 
   @Override 
   public void onClick(View view) { 
    String account=accountEdit.getText().toString(); 
    String password=passwordEdit.getText().toString(); 
    //此处设置的账号为“admin”,密码为“123” 
    if(account.equals("admin")&&password.equals("123")){ 
     //如果记住密码被选中,那么就将账号密码存储起来 
     //如果没有被选中,那么将存储的账号密码清空 
     if(checkbox.isChecked()){ 
      editor.putBoolean("remember_password",true); 
      editor.putString("account",account); 
      editor.putString("password",password); 
     }else{ 
      editor.clear(); 
     } 
     //最后千万不要忘记使用commit将添加的数据提交 
     editor.commit(); 
 
     //简单的跳转界面 
     Intent intent=new Intent(MainActivity.this,NextActivity.class); 
     startActivity(intent); 
     finish(); 
    }else{ 
     //如果账号密码错误,就跳出toast提示,并且清空存储的账号密码 
     Toast.makeText(MainActivity.this,"账号或密码错误!",Toast.LENGTH_LONG).show(); 
 
     editor.clear(); 
     editor.commit(); 
    } 
   } 
  }); 
 } 
 
 
} 

activity_main:

 
 
  
   
   
  
 
  
   
   
  
 
  
   
   
 
  
 
  
  

NextActivity:

import android.app.Activity; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.Window; 
 
public class NextActivity extends Activity { 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  requestWindowFeature(Window.FEATURE_NO_TITLE); 
  setContentView(R.layout.activity_next); 
 } 
 
 
} 

activity_next:

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
 
  
 

希望本文所述对大家学习Android程序设计有所帮助。


推荐阅读
  • 在 Android 应用开发中,实现全屏模式和无标题栏设计是提升用户体验的重要手段。本文详细介绍了如何通过 Java 代码实现取消标题栏 `this.requestWindowFeature(Window.FEATURE_NO_TITLE)`,并进一步探讨了全屏模式的多种实现方法和最佳实践,帮助开发者打造更加沉浸式和美观的用户界面。 ... [详细]
  • 在Android开发中,BroadcastReceiver(广播接收器)是一个重要的组件,广泛应用于多种场景。本文将深入解析BroadcastReceiver的工作原理、应用场景及其具体实现方法,帮助开发者更好地理解和使用这一组件。通过实例分析,文章详细探讨了静态广播的注册方式、生命周期管理以及常见问题的解决策略,为开发者提供全面的技术指导。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • Android动态界面布局设计与实现
    在最近的项目中,我们集成了第三方Geesee的直播视频功能,遇到了一个动态界面布局的挑战。具体需求是在用户点击按钮时,能够实现视频视图与文档视图的位置互换。此外,还需要确保文档视图在不同屏幕尺寸下保持良好的显示效果。为了实现这一目标,我们采用了灵活的布局管理策略,并结合了自定义视图组件,以提升用户体验和界面的适应性。通过这种方式,不仅解决了动态布局的问题,还增强了应用的交互性和视觉效果。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • HTML 中的 meta 和 script 标签属性是否区分大小写? ... [详细]
  • 深入解析C#中app.config文件的配置与修改方法
    在C#开发过程中,经常需要对系统的配置文件进行读写操作,如系统初始化参数的修改或运行时参数的更新。本文将详细介绍如何在C#中正确配置和修改app.config文件,包括其结构、常见用法以及最佳实践。此外,还将探讨exe.config文件的生成机制及其在不同环境下的应用,帮助开发者更好地管理和维护应用程序的配置信息。 ... [详细]
  • 本文详细探讨了 jQuery 中 `ajaxSubmit` 方法的使用技巧及其应用场景。首先,介绍了如何正确引入必要的脚本文件,如 `jquery.form.js` 和 `jquery-1.8.0.min.js`。接着,通过具体示例展示了如何利用 `ajaxSubmit` 方法实现表单的异步提交,包括数据的发送、接收和处理。此外,还讨论了该方法在不同场景下的应用,如文件上传、表单验证和动态更新页面内容等,提供了丰富的代码示例和最佳实践建议。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • 《Spring in Action 第4版:全面解析与实战指南》
    《Spring in Action 第4版:全面解析与实战指南》不仅详细介绍了Spring框架的核心优势,如简洁易测试、低耦合特性,还深入探讨了其轻量级和最小侵入性的设计原则。书中强调了声明式编程的优势,并通过基于约定的方法简化开发流程。此外,Spring的模板机制有效减少了重复代码,而依赖注入功能则由容器自动管理,确保了应用的灵活性和可维护性。 ... [详细]
  • SSAS入门指南:基础知识与核心概念解析
    ### SSAS入门指南:基础知识与核心概念解析Analysis Services 是一种专为决策支持和商业智能(BI)解决方案设计的数据引擎。该引擎能够为报告和客户端应用提供高效的分析数据,并支持在多维数据模型中构建高性能的分析应用。通过其强大的数据处理能力和灵活的数据建模功能,Analysis Services 成为了现代 BI 系统的重要组成部分。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
author-avatar
micheals
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有