当前位置:   article > 正文

Android中SharedPreference的用法_android sharedpreference

android sharedpreference

SharedPreference:是安卓特有的轻量级工具,存储结构是Key-Value的键值对方式

例子如下:

输入用户名和密码后,点击login可以用SharedPreference来存储

 

  1. xml代码:
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <LinearLayout
  4. xmlns:android="http://schemas.android.com/apk/res/android"
  5. xmlns:app="http://schemas.android.com/apk/res-auto"
  6. xmlns:tools="http://schemas.android.com/tools"
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. tools:context=".MainActivity">
  10. <LinearLayout
  11. android:layout_width="400dp"
  12. android:layout_height="400dp"
  13. android:orientation="vertical"
  14. android:layout_marginTop="30dp">
  15. <ImageView
  16. android:layout_width="60dp"
  17. android:layout_height="60dp"
  18. android:background="@drawable/dddss"
  19. android:layout_gravity="center"/>
  20. <LinearLayout
  21. android:layout_width="match_parent"
  22. android:layout_height="wrap_content">
  23. <TextView
  24. android:layout_width="wrap_content"
  25. android:layout_height="60dp"
  26. android:gravity="center"
  27. android:text="username:"
  28. android:textColor="#000000"
  29. android:textSize="30sp" />
  30. <EditText
  31. android:layout_width="match_parent"
  32. android:layout_height="match_parent"
  33. android:id="@+id/et_username"/>
  34. </LinearLayout>
  35. <LinearLayout
  36. android:layout_width="match_parent"
  37. android:layout_height="wrap_content">
  38. <TextView
  39. android:layout_width="wrap_content"
  40. android:layout_height="60dp"
  41. android:gravity="center"
  42. android:text="password:"
  43. android:textColor="#000000"
  44. android:textSize="30sp" />
  45. <EditText
  46. android:layout_width="match_parent"
  47. android:layout_height="match_parent"
  48. android:id="@+id/et_password"/>
  49. </LinearLayout>
  50. <LinearLayout
  51. android:layout_width="match_parent"
  52. android:layout_height="match_parent"
  53. android:orientation="horizontal"
  54. android:gravity="center">
  55. <Button
  56. android:layout_width="100dp"
  57. android:layout_height="60dp"
  58. android:text="login"
  59. android:layout_gravity="center"
  60. android:id="@+id/login"
  61. android:onClick="Login"
  62. />
  63. </LinearLayout>
  64. </LinearLayout>
  65. </LinearLayout>

  1. MainActicity的代码:
  2. package com.example.myapplication;
  3. import androidx.appcompat.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.text.TextUtils;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.EditText;
  9. import android.widget.Toast;
  10. import java.util.Map;
  11. public class MainActivity extends AppCompatActivity {
  12. //SharedPreferences 可以永久的存储信息
  13. private EditText et_username,et_password;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. et_username = findViewById(R.id.et_username);
  19. et_password = findViewById(R.id.et_password);
  20. Button login = findViewById(R.id.login);
  21. Map<String,String> userInfo = Utils.GetUserInfo(this);//获取用户信息
  22. //判断是否已经存上信息了,如果已经有信息,就让它显示
  23. if(userInfo!=null){
  24. et_username.setText(userInfo.get("username"));
  25. et_password.setText(userInfo.get("password"));
  26. }
  27. }
  28. public void Login(View view){
  29. String username = et_username.getText().toString().trim();
  30. String password = et_password.getText().toString().trim();
  31. //判断信息是否为空
  32. if(TextUtils.isEmpty(username)){ //TextUtils是系统的一个类,提供isEmpty
  33. Toast.makeText(this,"请输入username",Toast.LENGTH_SHORT).show();
  34. return;
  35. }
  36. if(TextUtils.isEmpty(password)){ //TextUtils是系统的一个类,提供isEmpty
  37. Toast.makeText(this,"请输入password",Toast.LENGTH_SHORT).show();
  38. return;
  39. }
  40. Toast.makeText(this,"登录成功!",Toast.LENGTH_SHORT).show();
  41. //判断信息是否保存成功
  42. boolean IsSaveSuccess = Utils.SaveUserInfo(this,username,password);
  43. if(IsSaveSuccess){
  44. Toast.makeText(this,"保存成功!",Toast.LENGTH_SHORT).show();
  45. }else
  46. Toast.makeText(this,"保存失败!",Toast.LENGTH_SHORT).show();
  47. }
  48. }
  1. 实现SharedPreference存储和读取功能java文件代码:
  2. package com.example.myapplication;
  3. import android.content.Context;
  4. import android.content.SharedPreferences;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. public class Utils {
  8. //存数据
  9. public static boolean SaveUserInfo(Context context,String username,String password)//第一个参数上下文,第二个账号,第三个密码
  10. {
  11. SharedPreferences sp = context.getSharedPreferences("data",Context.MODE_PRIVATE);//第一个是文件名,第二个是打开模式
  12. SharedPreferences.Editor editor = sp.edit();//获取editor对象
  13. editor.putString("username",username); //保存账号
  14. editor.putString("password",password); //保存密码
  15. return editor.commit(); //提交信息 ,commit就是个boolean型的,所以直接返回就可以
  16. }
  17. //取数据
  18. //因为存的信息有两个键值对,用户名和密码,所以可以用Map
  19. public static Map<String,String> GetUserInfo(Context context){
  20. SharedPreferences sp = context.getSharedPreferences("data",Context.MODE_PRIVATE);
  21. //获取Map对象
  22. Map<String,String> map = new HashMap<>();
  23. //获取值
  24. map.put("username",sp.getString("username",null));
  25. map.put("password",sp.getString("password",null));
  26. return map;
  27. }
  28. }

 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号