要保存视图控制器的状态,可以使用以下方法之一:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("key", value); // 保存数据到 Bundle 对象
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
String value = savedInstanceState.getString("key"); // 从 Bundle 对象中取回数据
// 恢复状态
}
@Override
protected void onPause() {
super.onPause();
SharedPreferences.Editor editor = getSharedPreferences("MyPrefs", MODE_PRIVATE).edit();
editor.putString("key", value); // 保存数据到 SharedPreferences
editor.apply();
}
@Override
protected void onResume() {
super.onResume();
SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
String value = prefs.getString("key", ""); // 从 SharedPreferences 中读取数据
// 恢复状态
}
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "MyDatabase";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建表格
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 升级表格
}
public void saveData(String key, String value) {
SQLiteDatabase db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("key", key);
contentValues.put("value", value);
db.insert("MyTable", null, contentValues); // 插入数据
db.close();
}
public String getData(String key) {
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.query("MyTable", new String[]{"value"}, "key=?", new String[]{key}, null, null, null);
if (cursor.moveToFirst()) {
String value = cursor.getString(cursor.getColumnIndex("value"));
cursor.close();
db.close();
return value;
} else {
cursor.close();
db.close();
return null;
}
}
}
以上是三种常见的保存视图控制器状态的方法,具体应根据需求选择适合的方法进行实现。