给出使用Android onSaveInstanceState保存数据的实例
时间: 2024-01-07 14:02:36 浏览: 67
好的,下面是一个使用 `onSaveInstanceState` 方法保存数据的例子:
```java
public class MainActivity extends AppCompatActivity {
private static final String KEY_NAME = "name";
private static final String KEY_AGE = "age";
private String mName;
private int mAge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
// 如果 savedInstanceState 不为空,则说明 Activity 已经被销毁过一次,可以从中恢复数据
mName = savedInstanceState.getString(KEY_NAME);
mAge = savedInstanceState.getInt(KEY_AGE);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// 在这里保存需要恢复的数据
outState.putString(KEY_NAME, mName);
outState.putInt(KEY_AGE, mAge);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_save:
// 假设用户输入了姓名和年龄
mName = ((EditText) findViewById(R.id.et_name)).getText().toString();
mAge = Integer.parseInt(((EditText) findViewById(R.id.et_age)).getText().toString());
Toast.makeText(this, "已保存数据", Toast.LENGTH_SHORT).show();
break;
case R.id.btn_restore:
// 恢复数据
((EditText) findViewById(R.id.et_name)).setText(mName);
((EditText) findViewById(R.id.et_age)).setText(String.valueOf(mAge));
Toast.makeText(this, "已恢复数据", Toast.LENGTH_SHORT).show();
break;
}
}
}
```
这个例子中,我们在 `onSaveInstanceState` 方法中保存了用户输入的姓名和年龄,然后在 Activity 重新创建时从 Bundle 对象中恢复数据。需要注意的是,我们在 `onCreate` 方法中检查了 savedInstanceState 是否为空,如果不为空则说明 Activity 已经被销毁过一次,可以从中恢复数据。
阅读全文