java - 杀死应用程序时 SharedPreferences 消失

标签 java android sharedpreferences

我正在尝试制作一个带有帐户的应用程序,但我正在努力解决 SharedPrefences 。我让他们保存帐户名称,它可以工作,但只有当我杀死应用程序一次时,我可以关闭手机并重新打开它,它仍然在那里,但是当我使用保存的 3/4 首选项杀死应用程序时有时,所有帐户都消失了。有什么问题,我用 onPause 保存首选项, onDestroy , onStop并阅读 onResume , onCreate ,重新启动。之前我只有 onPause 和 onResume 并且它的工作原理是一样的。这是代码:

   @Override
protected void onPause(){
    super.onPause();

    sharedpref = this.getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedpref.edit();
    editor.putString("uzytkownik1", getIntent().getStringExtra("nazwauz"));
    editor.putString("uzytkownik2", getIntent().getStringExtra("nazwauz2"));
    editor.putString("uzytkownik3", getIntent().getStringExtra("nazwauz3"));
    editor.putString("uzytkownik4", getIntent().getStringExtra("nazwauz4"));
    editor.putString("haslo1", getIntent().getStringExtra("haslouzy1"));
    editor.putString("haslo2", getIntent().getStringExtra("haslouzy2"));
    editor.putString("haslo3", getIntent().getStringExtra("haslouzy3"));
    editor.putString("haslo4", getIntent().getStringExtra("haslouzy4"));
    editor.apply();
}

我在 onStop 和 onDestroy 中写了同样的内容。

继续:

        sharedpref = this.getPreferences(Context.MODE_PRIVATE);
    if (sharedpref.getString("uzytkownik1", null) != null || sharedpref.getString("uzytkownik2", null) != null || sharedpref.getString("uzytkownik3", null) != null || sharedpref.getString("uzytkownik4", null) != null) {
        user1.setText(sharedpref.getString("uzytkownik1", null));
        user2.setText(sharedpref.getString("uzytkownik2", null));
        user3.setText(sharedpref.getString("uzytkownik3", null));
        user4.setText(sharedpref.getString("uzytkownik4", null));

onCreate 相同,和onRestart .

最佳答案

尝试在设置 SharedPreferences 后放置 super.onPause();

像这样

@Override 
protected void onPause(){ 
    sharedpref = this.getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedpref.edit();
    editor.putString("uzytkownik1", getIntent().getStringExtra("nazwauz"));
    editor.putString("uzytkownik2", getIntent().getStringExtra("nazwauz2"));
    editor.putString("uzytkownik3", getIntent().getStringExtra("nazwauz3"));
    editor.putString("uzytkownik4", getIntent().getStringExtra("nazwauz4"));
    editor.putString("haslo1", getIntent().getStringExtra("haslouzy1"));
    editor.putString("haslo2", getIntent().getStringExtra("haslouzy2"));
    editor.putString("haslo3", getIntent().getStringExtra("haslouzy3"));
    editor.putString("haslo4", getIntent().getStringExtra("haslouzy4"));
    editor.apply(); 

    super.onPause(); 

}

关于java - 杀死应用程序时 SharedPreferences 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56619428/

相关文章:

标题中带有 "Select All"复选框的 Android MultiSelectListPreference

java - 何时调用 editor.apply?

android - 使用 getSharedPreferences 保存新值

java - setWindowOpacity() 的 Swing 版本

android - LogCat 中的双击错误行不起作用

java - 分号和 'cannot resolve ...' 的奇怪问题

java - android jar导入到另一个项目时出现异常

java - 未找到与给定名称匹配的资源,即使该资源存在

java - 为什么我收到此错误文件过早结束?

java - CardLayout 管理器问题/困惑