让我来为你详细讲解 "Android学习之使用SharedPreferences存储应用程序数据" 的完整攻略。
什么是SharedPreferences?
SharedPreferences是Android中的一个轻量级存储类,用来保存应用程序的配置信息或者一些简单的数据。
SharedPreferences本质上是一个基于XML文件存储键值对的数据结构,易于操作和实现。只要简单的几行代码,就可以实现数据的存储和读取。
使用SharedPreferences存储数据
1.获取SharedPreferences对象
获取SharedPreferences对象需要调用getSharedPreferences()或getPreferences()方法。其中getSharedPreferences()方法是通过指定名称(SharedPreferences文件名称)来获取对象,而getPreferences()方法则是通过使用当前类的类名作为名称来获取对象,这里我们以getSharedPreferences()方法为例。
SharedPreferences sharedPreferences = getSharedPreferences("myData", Context.MODE_PRIVATE);
这里的"myData"代表SharedPreferences文件的名称,Context.MODE_PRIVATE表示文件的访问模式,MODE_PRIVATE代表只能被本应用程序访问。
2.存储数据
使用SharedPreferences存储数据需要通过SharedPreferences.Editor对象来实现,Editor对象中提供了一系列的putXX()方法,可以存储各种类型的数据,如putString()、putBoolean()、putInt()等等。
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("username", "Tom");
editor.putInt("age", 20);
editor.putBoolean("isLogin", true);
editor.apply();
3.读取数据
使用SharedPreferences读取数据也需要通过SharedPreferences对象,可以调用相应的getXX()方法来获取数据,如果获取的key不存在,则返回默认值。
String username = sharedPreferences.getString("username", "");
int age = sharedPreferences.getInt("age", 0);
boolean isLogin = sharedPreferences.getBoolean("isLogin", false);
示例1:使用SharedPreferences存储和读取一个计数器的值
下面是一个示例程序,通过按钮点击实现存储和读取一个计数器的值。点击“+1”按钮,计数器加1并存储到SharedPreferences中;点击“读取”按钮,从SharedPreferences中读取计数器的值并显示在TextView上。
public class MainActivity extends AppCompatActivity {
private TextView tvCount;
private int count = 0;
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvCount = findViewById(R.id.tv_count);
Button btnAdd = findViewById(R.id.btn_add);
Button btnRead = findViewById(R.id.btn_read);
sharedPreferences = getSharedPreferences("myCount", Context.MODE_PRIVATE);
count = sharedPreferences.getInt("count", 0);
tvCount.setText(String.valueOf(count));
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count++;
tvCount.setText(String.valueOf(count));
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("count", count);
editor.apply();
}
});
btnRead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count = sharedPreferences.getInt("count", 0);
tvCount.setText(String.valueOf(count));
}
});
}
}
在这个例子中,我们通过getSharedPreferences()方法获取了一个SharedPreferences对象,以文件名为"myCount",然后通过SharedPreferences对象来读取、保存计数器的值。
示例2:使用SharedPreferences实现登录状态的保存与读取
下面是一个示例程序,通过EditText输入用户名和密码,点击登录按钮来实现登录操作。如果登录成功,则将登录状态保存到SharedPreferences中;如果退出登录,则将登录状态从SharedPreferences中清除。
public class LoginActivity extends AppCompatActivity {
private EditText etUsername;
private EditText etPassword;
private CheckBox checkBox;
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
etUsername = findViewById(R.id.et_username);
etPassword = findViewById(R.id.et_password);
checkBox = findViewById(R.id.checkbox);
Button btnLogin = findViewById(R.id.btn_login);
sharedPreferences = getSharedPreferences("loginState", Context.MODE_PRIVATE);
if (sharedPreferences.getBoolean("isLogin", false)) {
etUsername.setText(sharedPreferences.getString("username", ""));
etPassword.setText(sharedPreferences.getString("password", ""));
checkBox.setChecked(true);
}
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = etUsername.getText().toString().trim();
String password = etPassword.getText().toString().trim();
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
Toast.makeText(LoginActivity.this, "用户名和密码不能为空", Toast.LENGTH_SHORT).show();
} else {
if (username.equals("admin") && password.equals("123456")) {
if (checkBox.isChecked()) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("username", username);
editor.putString("password", password);
editor.putBoolean("isLogin", true);
editor.apply();
}
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(LoginActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show();
}
}
}
});
}
}
在这个例子中,我们通过getSharedPreferences()方法获取了一个SharedPreferences对象,以文件名为"loginState",然后通过SharedPreferences对象来保存和读取登录状态,以实现自动登录的功能。
以上就是使用SharedPreferences存储数据的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android学习之使用SharedPreferences存储应用程序数据 - Python技术站