有一个EditText输入框,实现保存和恢复Activity中EditText中的文字。写出onSaveInstanceState和onRestoreInstanceState的实现
时间: 2024-09-27 19:10:39 浏览: 40
在Android中,`EditText` 的内容需要在Activity销毁(如用户旋转设备、按Home键等)后保存,并在下次启动时恢复,这通常通过重写 ` onSaveInstanceState()` 和 ` onRestoreInstanceState()` 来实现。这两个方法分别用于保存和恢复组件的状态。
首先,在`onSaveInstanceState(Bundle outState)` 中,我们需要将 `EditText` 的文本添加到`Bundle`中:
```java
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// 获取EditText实例并保存其文本
EditText editText = findViewById(R.id.edit_text_id);
String text = editText.getText().toString();
// 将文本存入Bundle
outState.putString("edit_text_data", text);
}
```
然后,在`onCreate(Bundle savedInstanceState)` 或者 `onRestoreInstanceState(Bundle savedInstanceState)` 中,我们在Activity复原时从`Bundle`中恢复文本:
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
// 如果存在先前的状态数据
String savedText = savedInstanceState.getString("edit_text_data");
if (savedText != null) {
// 从 Bundle 中获取并设置回 EditText
EditText editText = findViewById(R.id.edit_text_id);
editText.setText(savedText);
}
}
}
// 当 Activity 被恢复时,也可以在这里调用
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// 恢复 EditText 文本同上
}
```
阅读全文