首页 > 解决方案 > 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();
}

标签: javaandroidsharedpreferences

解决方案


听起来你的活动被杀死了。如果是这种情况,那么您应该实现 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"));

}

推荐阅读