二 Android——数据持久化技术 SharedPreference存储( 二 )


2.2从中读取数据
对象中提供了一系列的get方法 , 用于对存储数据的读取 , 每种get方法对应了.中的put方法 , 比如读取布尔型数据就使用()方法 , 读取字符串数据就使用()方法 。get方法都接收两个参数 , 第一个参数是键 , 传入存储数据时使用的键就可以得到相应的值;第二个参数是默认值 , 当传入的键找不到相应的值的时候就会返回默认值 。
下面基于上面的示例代码继续进行开发:
首先在.xml中添加一个用于触发读取操作的:

二  Android——数据持久化技术 SharedPreference存储

文章插图
然后在的()方法中注册该按钮的点击事件:
Button readData = http://www.kingceram.com/post/(Button) findViewById(R.id.readdata);readData.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {//1.Context类中的getSharedPreferences()方法SharedPreferences gsp = getSharedPreferences("data", MODE_PRIVATE);//2.Activity类中的getPreferences()方法//SharedPreferences gsp = getPreferences(MODE_PRIVATE);String name = gsp.getString("name", "");int age = gsp.getInt("age", 0);Boolean isMan = gsp.getBoolean("Male", true);String toast = "name is " + name + "\nage is " + age +"\nMale? " + isMan;Toast.makeText(MainActivity.this, toast, Toast.LENGTH_LONG).show();}});
通过()方法获取对象 , 再通过get方法获取到数据后 , 通过toast显示出来 。
2.3记住密码小例子
(上文中第三个方法:类中()的用法)
首先创建一个布局:

效果如下图所示:
然后在中通过类中的()方法实现账户密码的存储读取操作:
public class LoginActivity extends AppCompatActivity {private EditText accountEdit;private EditText passwordEdit;private CheckBox rememberPassword;private Button login;private SharedPreferences sp;private SharedPreferences.Editor spEditor;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);accountEdit = (EditText) findViewById(R.id.account);passwordEdit = (EditText) findViewById(R.id.password);rememberPassword = (CheckBox) findViewById(R.id.remember_password);login = (Button) findViewById(R.id.login);sp = PreferenceManager.getDefaultSharedPreferences(this);boolean isRemember = sp.getBoolean("isRemember", false);if(isRemember) {//若上次选中了记住密码 , 则将账户密码信息输出到文本框中String account = sp.getString("account", "");String password = sp.getString("password", "");accountEdit.setText(account);passwordEdit.setText(password);rememberPassword.setChecked(true);}login.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){String account = accountEdit.getText().toString();String password = passwordEdit.getText().toString();if (account.equals("123456") && password.equals("654321")){//验证账户密码spEditor = sp.edit();if(rememberPassword.isChecked()) {//若记住密码选项已选中spEditor.putString("account", account);spEditor.putString("password", password);spEditor.putBoolean("isRemember", true);} else {spEditor.clear();}spEditor.apply();Toast.makeText(LoginActivity.this,"Login success!", Toast.LENGTH_SHORT).show();} else {Toast.makeText(LoginActivity.this, "account and password is invalid", Toast.LENGTH_SHORT).show();}}});}}