2017-01-25 11 views
0

シンプルなクリッカーゲームを作成しました。私はSharedPreferencesに最高値を保存したかったのです。だから私たちはMainActivityにこのコードを書いた:SharedPreferencesは書き込み/読み取りではありません

SharedPreferences sharedPref = getSharedPreferences("myPrefs",Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = sharedPref.edit(); 
      editor.putInt("Highscore",clicks); 
      editor.commit(); 

intクリックはあなたがそのラウンドを行ったスコアです。別のアクティビティで

、我々はのTextViewでハイスコアを表示したい:

SharedPreferences sharedPrefs = getSharedPreferences("myPrefs",Context.MODE_PRIVATE); 

    highscore = sharedPrefs.getInt("Highscore",0); 
    highscoretv.setText(Integer.toString(highscore)); 

しかし、ハイスコアが表示されませんでした。私はあなたが何をすることができるアイデアを持っていますか?

+0

「ハイスコアは表示されませんでした」と表示されたものは? '0'はデフォルトですか?それともエラーが出ますか? –

+0

「クリック」が希望の値を保持しているかどうかを確認しますか? – rafsanahmad007

答えて

0

たぶん、あなたは代わりにeditor.commit()を使用するのではなく、Context.MODE_PRIVATE

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
+2

['MODE_PRIVATE'](https://developer.android.com/reference/android/content/Context.html#MODE_PRIVATE)は' 0'と評価される定数です。これは動作を変更しません。 –

0

Context.MODE_PRIVATEを交換してみてください。 editor.apply()を使用する必要があります。 適用は、瞬時に設定オブジェクトを更新し、新しい値を非同期で保存します。

0

のコードのこの部分を使用する必要があり、両方の活動にちょうどMODE_PRIVATE

0

申し訳ありません。私はそれを自分で解決しました。ハイスコ​​アは、すでにバックグラウンドで開いていたランチャーアクティビティに表示されました。私がMainActivityを閉じたとき、LauncherActivityはForegroundに入っていましたが、更新されませんでした。私はこれを防ぐことができるので、あなたが地面の活動のようなものを私に教えてもらえますか?

関連する問題