android - 从 Edittext 保存最新文本并在 onDestroy 之后恢复它

标签 android android-edittext state

对于我的报价创建者应用程序,如果用户在应用程序中写了一段文字,然后不小心关闭了应用程序并再次启动,那么所有文本都将消失。我当然想防止这种情况发生,并且我尝试了一个没有成功的通用解决方案:

这是我到目前为止所做的。我删除了不相关的代码。

public static EditText mEditText;
private String savedText;
private static final String SAVED_TEXT_KEY = "";

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString(SAVED_TEXT_KEY, mEditText.getText().toString());
    savedText = SAVED_TEXT_KEY;

}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);

    mEditText.setText(SAVED_TEXT_KEY);
    String myString = savedInstanceState.getString(SAVED_TEXT_KEY);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    mEditText = (EditText) findViewById(R.id.edittext);
    mEditText.setTypeface(Style.getTypeface(this, Style.SERIF));
    savedText = mEditText.getText().toString();
    mEditText.setText(SAVED_TEXT_KEY);



    if(savedInstanceState !=null){

        savedText = savedInstanceState.getString(SAVED_TEXT_KEY);

    }
}

最佳答案

看来是我处理这个问题的方法不对。按照建议,我使用 SharedPreferences 来保存当前文本。

   public static final String LAST_TEXT = "";

    final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
    mEditText.setText(pref.getString(LAST_TEXT, ""));
    mEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {

            pref.edit().putString(LAST_TEXT, s.toString()).commit();


        }
    });

关于android - 从 Edittext 保存最新文本并在 onDestroy 之后恢复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35148717/

相关文章:

java - 自动数据绑定(bind)

java - Java/Android 中的字符串自然排序

java - 日期到时间戳

Android - 软键盘将我的 Activity 布局推到屏幕外

ios - MKPlacemark() 创建保留周期

flutter - Flutter 将数据从父 StatefulWidget 传递给子 StatefulWidget

connection - 检测到错误/断开连接时推送器自动重新连接

android - 在 React Native 中重置内部 android 图像缓存

Android-将日期和文本保存到手机内存中的 SQLite?

android - 清除 EditText 上光标位置之前的整个文本