android:数据篇-SharedPreference

网友投稿 287 2022-09-06

android:数据篇-SharedPreference

SharedPreference:

1.是一种轻型的数据存贮方式

2.本质是基于xml文件存贮key_value键值对数据

3.通常用来存贮一些简单的配置信息(密码,窗口状态,软件的基本配置,壁纸等等)

SharedPreferences对象只能获取数据而不支持存贮和修改,存贮和修改是通过Editor对象实现

使用SharedPreferences保存数据的步骤:

1.获得SharedPreferences对象

有两种方式

(1)通过函数context.getsharedpreferences(string name,int mode) 获得的SharedPreferences对象可以被同一应用程序下的其他​​组件​​共享。name为指定文件的名称,mode为操作模式 ,共有四种(Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容。Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。MODE_WORLD_READABLE:表示当前文件可以被其他应用读取。MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。​)

SharedPreferences pre = getSharedPreferences("myinfo", MODE_PRIVATE);

(2)通过函数activity.getpreferences(int mode),其中配置文件仅可以被调用的activity使用。mode为操作模式

2.获得SharedPreferences.Editor对象

SharedPreferences pre = getSharedPreferences("myinfo", MODE_PRIVATE); Editor edit=pre.edit();

3.通过Editor接口的putXxx()方法保存key-value,其中的Xxx表示不同的数据类型

edit.putString("name", "zhangsan"); edit.putString("age", "30");

存贮完之后别忘记通过Editor的commit()方法提交

edit.commit();

4.获取数据

SharedPreferences pre = getSharedPreferences("myinfo", MODE_PRIVATE); pre.getString("name", ""); pre.getString("age", "");

5.移除数据

edit.remove("name"); edit.remove("age"); edit.commit();

我学习的大概就这么多了 。下面附上一个实例。保存用户名和密码

运行结果

MainActivity.class

package com.example.sharedpreferences;import android.os.Bundle;import android.app.Activity;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.view.View;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity { private EditText et_name; private EditText et_passward; private CheckBox ckb_save; private SharedPreferences pre; private Editor edit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_name = (EditText) findViewById(R.id.et_name); et_passward = (EditText) findViewById(R.id.et_passward); ckb_save = (CheckBox) findViewById(R.id.checkBox1); pre = getSharedPreferences("myinfo", MODE_PRIVATE); edit = pre.edit(); String name=pre.getString("name", ""); String passward=pre.getString("passward", ""); if(name!=null&&passward!=null){ et_name.setText(name); et_passward.setText(passward); } } public void btnLogin(View v) { switch (v.getId()) { case R.id.btn_login: { String name = et_name.getText().toString(); String passward = et_passward.getText().toString(); if (name!=null&&passward!=null) { if (ckb_save.isChecked()) { edit.putString("name", name); edit.putString("passward", passward); edit.commit(); Toast.makeText(MainActivity.this, "保存用户成功", Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(MainActivity.this, "未勾选保存,保存失败", Toast.LENGTH_SHORT).show(); } } else{ Toast.makeText(MainActivity.this, "用户名或者密码为空,请重新输入", Toast.LENGTH_SHORT).show(); et_name.setText(null); et_passward.setText(null); } break; } case R.id.btn_cancel: { edit.remove("name"); edit.remove("passward"); edit.commit(); Toast.makeText(MainActivity.this, "已成功忘记", Toast.LENGTH_SHORT).show(); break; } } }}

布局文件

上一篇:比利时淘汰卫冕冠军,捷克爆冷击退荷兰!
下一篇:hiho#1037 : 数字三角形 (动态规划)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~