繁体   English   中英

我无法使用SharedPreferences

[英]I can't get SharedPreferences to work

我正在为Android开发一个应用程序,在“启动”屏幕上,我希望它在第一次启动该应用程序时显示AlertDialog。 这是我的代码:

    SharedPreferences savedInfo = getSharedPreferences("SavedInfo", MODE_PRIVATE);
    SharedPreferences.Editor infoEditor = savedInfo.edit();

        boolean firstLaunch = savedInfo.getBoolean("firstLaunch", true);

        final AlertDialog importDialog = new AlertDialog.Builder(SplashActivity.this).create();

        if (firstLaunch == true) {
            importDialog.setTitle(R.string.splash_import_title);
            importDialog.setMessage(getString(R.string.splash_import_text));
            importDialog.setIcon(android.R.drawable.ic_dialog_alert);
            importDialog.setButton(getString(R.string.splash_import_yes), new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    //ALL FILE STUFF HERE
                    importDialog.dismiss();
                    startTimer();
                }
            });
            importDialog.setButton2(getString(R.string.splash_import_no), new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    importDialog.dismiss();
                        startTimer();
                }
            });  
            importDialog.show();
            infoEditor.putBoolean("firstLaunch", false);
        } else {
            startTimer();
        }

问题是,它每次都会显示对话框。 即使我已经启动它。 谢谢您的时间和帮助,zeokila。

我相信,你必须运行infoEditor.commit()putBoolean 在您保存新的首选项之前,它实际上并没有保存。

http://developer.android.com/reference/android/content/SharedPreferences.Editor.html

您必须告诉编辑器进行保存。 添加infoEditor.commit(); (同步)或infoEditor.apply(); (异步)以保持您的价值。

infoEditor.commit()似乎后失踪infoEditor.putBoolean("firstLaunch", false) ,因此新的值永远不会被保存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM