本文共 4576 字,大约阅读时间需要 15 分钟。
要在Android应用中使用SharedPreferences存储数据,首先需要获取SharedPreferences对象,然后通过Editor进行操作,最后提交修改。以下是详细步骤:
获取SharedPreferences对象
使用getSharedPreferences(String name, int mode)
方法获取SharedPreferences对象。name
是文件名,mode
决定文件操作模式,常用MODE_PRIVATE
(私有模式)。 获取可编辑的Editor对象
调用SharedPreferences.edit()
方法获取可编辑的Editor对象,通过Editor对象对数据进行修改。 存储数据
根据数据类型调用相应的put方法,例如:putString(String key, String value)
存储String类型数据。putInt(String key, int value)
存储整数。putBoolean(String key, boolean value)
存储布尔值。提交修改
最后调用commit()
方法提交修改,确保数据保存到文件中。 示例代码:
SharedPreferences sp = getSharedPreferences("data", MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.putString("username", "传智播客");editor.putInt("age", 8);editor.commit();
要读取SharedPreferences中的数据,需要调用相应的get方法:
获取String数据
使用getString(String key, String defaultValue)
方法,若key不存在则返回默认值。 获取整数数据
使用getInt(String key, int defaultValue)
方法。 获取布尔值数据
使用getBoolean(String key, boolean defaultValue)
方法。 示例代码:
SharedPreferences sp = getSharedPreferences("data", MODE_PRIVATE);String username = sp.getString("username", "");int age = sp.getInt("age", 0);
要删除SharedPreferences中的数据,可以使用Editor对象的remove(String key)
方法或clear()
方法:
remove(String key)
:删除指定key的数据。clear()
:删除所有数据。示例代码:
SharedPreferences sp = getSharedPreferences("data", MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.remove("username");editor.clear();editor.commit();
程序功能:用户输入QQ账号和密码,点击登录按钮后,弹出提示信息。程序退出后重新启动时,QQ账号和密码仍然显示在EditText中。
实现步骤:
布局文件(activity_main.xml):
设计EditText和Button布局,确保用户输入账号和密码。工具类(SaveQQ.java):
提供保存和读取数据的方法。MainActivity逻辑:
在onCreate方法中初始化组件,设置OnClickListener监听按钮点击事件。 在onClick方法中获取用户输入,判断是否为空,登录成功后保存数据并弹出提示。代码示例:
public class SaveQQ { public static boolean saveUserInfo(Context context, String account, String password) { SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE); SharedPreferences.Editor edit = sp.edit(); edit.putString("username", account); edit.putString("password", password); edit.commit(); return true; } public static MapgetUserInfo(Context context) { SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE); String account = sp.getString("username", ""); String password = sp.getString("password", ""); Map userMap = new HashMap<>(); userMap.put("account", account); userMap.put("password", password); return userMap; }}
MainActivity代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText etAccount; private EditText etPassword; private Button btnLogin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); // 获取用户信息并显示在EditText中 MapuserInfo = SaveQQ.getUserInfo(this); if (userInfo != null) { etAccount.setText(userInfo.get("account")); etPassword.setText(userInfo.get("password")); } } private void initView() { etAccount = (EditText) findViewById(R.id.et_account); etPassword = (EditText) findViewById(R.id.et_password); btnLogin = (Button) findViewById(R.id.btn_login); btnLogin.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_login: String account = etAccount.getText().toString().trim(); String password = etPassword.getText().toString(); if (TextUtils.isEmpty(account)) { Toast.makeText(this, "请输入QQ账号", Toast.LENGTH_SHORT).show(); return; } if (TextUtils.isEmpty(password)) { Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show(); return; } Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show(); boolean isSaveSuccess = SaveQQ.saveUserInfo(this, account, password); if (isSaveSuccess) { Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show(); } break; } }}
在开发工具(如Android Studio)中,检查设备文件夹中的share_prefs
目录,找到对应的data.xml
文件,确认数据是否正确保存。
转载地址:http://pulk.baihongyu.com/