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();
        }

問題は、毎回ダイアログが表示されることです。すでに起動している場合でも。時間を割いて助けてくれてありがとう、ゼオキラ。

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();(同期) OR (非同期) を追加infoEditor.apply();して、値を永続化します。

于 2012-04-12T18:22:49.143 に答える
1

infoEditor.commit()の後に欠落しているように見えるinfoEditor.putBoolean("firstLaunch", false)ため、新しい値は保存されていません。

于 2012-04-12T18:27:01.327 に答える