栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android学习:利用SharedPreferences存储数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android学习:利用SharedPreferences存储数据

Android学习:利用SharedPreferences存储数据

SharedPreferences是Android系统提供的一种轻量级的数据存储方式,主要用来存储一些简单的数据,如系统登录的用户名和密码等,或者存储常用的系统配置信息,如窗口状态等。

SharedPreferences可以保存和检索的各种基本数据类型(boolean、float、int、long、string)的持久键值对,是基于XML文件存储的key-value键值对数据,该XML文件存储在手机的data/data//shared_prefs目录下。

利用SharedPreferences进行数据存取的基本用法如下:

(1)获取SharedPreferences对象

可以通过两种方式获取SharedPreferences对象。

方法一:调用Context对象的getSharedPreferences()方法,基本代码如下:

getSharedPreferences(String name,int mode);

方法二:调用Activity对象的getPreferences()方法,基本代码如下:

getPreferences(int mode);

根据参数name,可以获取相应的SharedPreferences对象,name表示要操作的XML文件名;参数mode有以下几个可选值。

Context.MODE_PRIVATE : 指定该SharedPreferences数据只能被本应用程序进行读、写操作。

Context.MODE_WORLD_WRITEABLE :指定该SharedPreferences数据能被其他应用读,写。

Context.MODE_WORLD_READABLE :指定该SharedPreferences数据能被其他应用程序读,但是不能写。

Context.MODE_MULTI_PROCESS : 这是SDK 2.3之后添加的选项,当多个进程读写同一个SharedPreferences时,它会检查文件是否被修改。

以上两种方法的区别:

第一种方法(getSharedPreferences())获取的SharedPreferences对象可以被同一应用程序下的其他组件共享;

第二种方法(getPreferences())获取的SharedPreferences对象只能在该Activity中使用

(2)向 SharedPreferences中写入值

首先,通过SharedPreferences.Editor获取Editor对象。

然后,使用对应具体数据类型的Editor的相应方法(如putBoolean()或putString()等)来存入值。

最后,调用Editor的commit()方法提交写入值的操作。

另外,Editor还有两个常用的方法,用来从Preferences中移除键值。

editor.remove(String key): 用于下次通过commit()方法提交操作时移除key对应的键值对。

editor.clear(): 用于移除所有键值对。

(3)从SharedPreferences中读写值

使用对应具体数据类型的Editor的相应方法getXxxx()来读取键值。

示例:开发一个Android应用程序,利用SharedPreferences来存储当前输入的用户名和密码信息,通过单击相应的功能按钮,来实现数据的保存、提取和移除所有键值对等基本功能。

XML布局代码如下:



​
    
    
        
        
    
    
        
        
    
    
        

MainActivity.java文件:

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
​
public class MainActivity extends AppCompatActivity {
​
    //定义各个控件
    private EditText username;
    private EditText password;
​
    //1.定义要保存SharedPreferences的XML文件
    String PREFS_NAME = "ex13_1.mySharedPreferences.unm_pwd";
​
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        username = (EditText) findViewById(R.id.editText1);
        password = (EditText) findViewById(R.id.editText2);
        final Button button1 = (Button)findViewById(R.id.button1);
        final Button button2 = (Button)findViewById(R.id.button2);
        final Button button3 = (Button)findViewById(R.id.button3);
        //数据保存
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //2.定义一个只允许本程序访问的SharedPreFerences对象
                SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
                //3.生成一个保存编辑变量
                SharedPreferences.Editor editor = settings.edit();
                //4.添加要保存的键值和真值
                editor.putString("username",username.getText().toString());
                editor.putString("password",password.getText().toString());
                //5.提交数据保存
                editor.commit();
                //清空输入
                username.setText("");
                password.setText("");
                Toast.makeText(MainActivity.this,"数据保存完成",Toast.LENGTH_LONG).show();
            }
        });
        //数据提取
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //提取保存的用户名,如果无则为空
                username.setText(getUserName());
                //提取保存的密码,如果无则为空
                password.setText(getPassWord());
                Toast.makeText(MainActivity.this,"数据提取完成",Toast.LENGTH_LONG).show();
            }
        });
        //移除所有键值对
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences settings = getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE);
                //生成一个保存编辑对象
                SharedPreferences.Editor editor = settings.edit();
                //移除所有键值对
                editor.clear();
                editor.commit();
                username.setText("");
                password.setText("");
                Toast.makeText(MainActivity.this,"移除所有键值对成功",Toast.LENGTH_LONG).show();;
            }
        });
    }
    private String getUserName(){
​
        SharedPreferences settings = getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE);
        //获取一个键值为"username"的值,若Preference中不存在,就用后面的值作为返回值
        String username = settings.getString("username","");
        return username;
​
    }
    private String getPassWord(){
​
        SharedPreferences settings = getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE);
        //获取一个键值为"username"的值,若Preference中不存在,就用后面的值作为返回值
        String password = settings.getString("password","");
        return password;
​
    }
}
​

运行即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878506.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号