2012-04-12 14 views
0

私はAndroid用のアプリケーションを作成しています。スプラッシュ画面では、初めてアプリケーションが起動されたときにAlertDialogを表示します。これは私のコードです:私はSharedPreferencesを動作させることができません

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

問題は、私に毎回ダイアログが表示されます。私が既にそれを打ち上げた時でさえ。あなたの時間と助けてくれてありがとう、ゼオキラ。

答えて

1

putBooleanの後にinfoEditor.commit()を実行する必要があります。あなたがそうするまで、新しい好みを実際には保存しません。あなたが保存してエディタを伝える必要があり

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

+0

ありがとう、それは働いて、私はあなたがそれをしなければならないことに気付かなかった。 –

1

infoEditor.commit();(同期)またはinfoEditor.apply();(非同期)を追加して値を保持します。

1

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

関連する問題