0

我正在为 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。

4

3 回答 3

1

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

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

于 2012-04-12T18:22:20.203 回答
1

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

于 2012-04-12T18:22:49.143 回答
1

infoEditor.commit()之后似乎丢失了infoEditor.putBoolean("firstLaunch", false),因此从未保存过新值。

于 2012-04-12T18:27:01.327 回答