java - SharedPreferences 自动保存 TextView 中的文本,无需保存按钮
问题描述
我有一个应该记住的问题 - 保存用户通过语音输入的 TextView 中的文本,但是我启用了夜间模式,当白天模式进入夜间模式时,那一刻输入的文本消失了. 我知道它需要是 SharedPreferences,我尝试了这段代码,但我无法记录任何内容。我强调没有保存按钮。刷新Activity时需要返回已经输入的文本。我请求帮助
/*...*/{
//...
myText = (TextView) findViewById(R.id.textView);
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (!TextUtils.isEmpty(restoredText)) {
myText.setText(restoredText);
}
//...
}
public void loadData() {
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putString("text", myText.getText().toString());
editor.commit();
}
解决方案
听起来你的活动被杀死了。如果是这种情况,那么您应该实现 android 活动生命周期方法 onSaveInstanceState 和 onRestoreInstanceState。
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(bundle);
state.putString("text", myText.getText().toString());
}
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
myText.setText(savedInstanceState.getString("text"));
}
推荐阅读
- .net - ASP.net Core SignalR:服务器返回握手错误:成功连接后取消握手
- typescript - 将测试项目从 AMD 转换为 ES6 会导致问题 Qunit Asynctest case
- r - 无法使用 Plotly 和 Shiny 显示误差线
- flutter - Flutter Getx builder不更新UI
- javascript - 无法在 Jsplumb 社区版中添加节点或形状
- c# - 在给定字节的第一次响应后,使用 BeginRead DataReturned 的 TCP 客户端为 NULL
- java - 实体 id 存在,但在 equals() 方法中显示为 null(休眠)
- macos - 在 Osx finder 上显示 shell 命令服务的结果
- winapi - 从 Windows 中的 MFC 应用程序切换登录的用户会话事件捕获
- buffer - 如何将 multer MemoryStorage 缓冲区转换为 File 对象