本篇博文用一个登录的小案例来进行sp的使用练习。
登陆案例请访问我的上一篇博文:https://blog.csdn.net/liyunfu233/article/details/84072958
代码如下:
package com.example.sp;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
EditText et_username;
EditText et_userpassword;
CheckBox cb_ischeck;
SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//[0]初始化sp的实例
sp=getSharedPreferences("config",0);
//[1]找到我们关心的控件
et_username=findViewById(R.id.tv_username);
et_userpassword=findViewById(R.id.tv_pwd);
cb_ischeck=findViewById(R.id.cb_remember);
//[2]在config.xml文件中把我们关心的数据取出来然后显示到edittext上
String name=sp.getString("name","");
String pwd=sp.getString("pwd","");
//[3]把name和pwd设置到edittext上
et_username.setText(name);
et_userpassword.setText(pwd);
}
//[2]写按钮的点击事件
public void login(View v){
//[2.1]获取用户名和密码
String name=et_username.getText().toString().trim();
String pwd=et_userpassword.getText().toString().trim();
//[2.2]判断name和pwd是否为空
if (TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd)){
Toast.makeText(MainActivity.this,"用户名或密码不能为空",Toast.LENGTH_SHORT).show();
}else {
//[2.3]进行登录的逻辑
System.out.println("连接服务器进行登录 网络编程之后实现");
if (cb_ischeck.isChecked()) {
//[2.4]使用SharedPreferences去保存数据 拿到sp的实例
/**
* name 会帮助我们生成一个xml文件
* mode 模式
*
*/
SharedPreferences sp = getSharedPreferences("config", 0);
//[2.5]获取sp的编辑器
SharedPreferences.Editor edit = sp.edit();
edit.putString("name", name);
edit.putString("pwd", pwd);
//[2.6]记得把edit进行提交
edit.commit();
}
}
}
}
本篇博文只在布局文件和mainactivity.xml进行了修改:
首先定义全局变量sp,之后在login方法中初始化sp的实例,通过getSharedPreferences()方法实例化,第一个参数是帮助我们生成的xml文件名字,第二个参数是模式也就是下图几个MODE参数 。然后获取sp的编辑器,并把数据进行提交。
下面是读取文件内容的方法:只需要实例化,并get到我们需要的数据就行了。