錯誤代碼
String punkte = points; // 變量作為文件名,每次不同
SharedPreferences load = getSharedPreferences(punkte, 0); // 導致每次讀寫不同文件
修正
private static final String PREFS_NAME = "game_prefs";
@Override
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences sp = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
String points = sp.getString("punkte", "0");
textView.setText(points);
}
public void mehrPunkte() {
SharedPreferences sp = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
String points = sp.getString("punkte", "0");
textView.setText(points);
sp.edit().putString("punkte", "3").apply();
}
關鍵點
- SharedPreferences 文件名必須固定(常量),否則每次操作不同文件。
- 模式常量用
MODE_PRIVATE 而非數字 0,語義明確。
- 編輯器鏈式調用
edit().putXxx().apply(),避免多次 edit() 丟失修改。