2013-02-19 112 views
0

我不知道爲什麼我的代碼不工作,遵循android開發人員指南這應該工作。我認爲這是因爲我沒有創建首選項文件,我不知道如何去做。有人可以看一看,看看我是否正確寫入了一切嗎?Android SharedPreferences

public static final String PREFS_NAME = "TestPrefs"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void Save(View v){ 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); 
    final EditText s = (EditText) findViewById(R.id.editText1); 
    settings.edit().putString("TBox1", s.getText().toString()); 
    settings.edit().commit(); 
} 

public void Open(View v){ 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); 
    final EditText s = (EditText) findViewById(R.id.editText1); 
    String newS = settings.getString("TBox1", ""); 
    s.setText(newS); 
} 
+0

該錯誤似乎是在保存代碼,因爲我總是得到TBox1的默認值。 – Demonicpenguin 2013-02-19 02:47:13

回答

2

你必須在同一個編輯器上commit()。如您所做的那樣承諾處理另一個對象意味着之前的putString()會丟失。這意味着改變

settings.edit().putString("TBox1", s.getText().toString()); 
settings.edit().commit(); 

settings.edit().putString("TBox1", s.getText().toString()).commit(); 

當然,如果你有一個以上的東西進行編輯,你可以保持一個參考給編輯:

如:

SharedPreferences.Editor editor = settings.edit(); 
editor.putString("key1", "value1"); 
editor.putString("key2", "value2"); 
editor.commit(); 
+0

謝謝你,我想到這很簡單。 – Demonicpenguin 2013-02-19 02:50:12

+0

@Demonicpenguin沒問題:-) – 2013-02-19 02:52:11