2013-08-04 53 views
1

我試圖在共享首選項文件中存儲一些字符串,然後在另一個活動中檢索它們,除非它似乎沒有工作。任何指導如何將出現錯誤將不勝感激。非常感謝。共享首選項無法正常工作

public void save(View view) { 
    SavePreferences("name", nameS); 
    SavePreferences("current", currentS); 
    SavePreferences("goal", goalS); 
    SavePreferences("CurrentBmi", cBmiS); 
    SavePreferences("goalBmi", gBmiS); 
    Toast.makeText(this, "profile Saved", Toast.LENGTH_SHORT).show(); 
    startActivity(new Intent(this, MainActivity.class)); 

} 

private void SavePreferences(String key, String value) { 
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString(key, value); 
    editor.commit(); 
} 






public class Progress extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_progress); 
    SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
    String test = sharedPreferences.getString("name", ""); 
    String test2 = sharedPreferences.getString("current", ""); 
    TextView testy = (TextView) findViewById(R.id.textView1); 
    testy.setText(test); 
    TextView testz = (TextView) findViewById(R.id.test2); 
    testz.setText(test2); 
} 

回答

3

通過代碼,您可以限制sharedpreferences訪問活動(上下文)級別。

:由於您使用 getPreferences(MODE_PRIVATE);

更改爲

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 

SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE); 

的getPreferences保存在活動活動MainActivity

值將不能在活動Progress可用0

檢索SharedPreferences對象,以訪問對此活動私有的偏好

+0

第一點是非常有意義的,謝謝。不知道你用getPreferences得到了什麼。更改保存之後,我的檢索方法將不起作用嗎? – Programatt

+0

我剛剛從文檔中發佈getPreferences的定義,它說它檢索SharedPreferences對象以訪問對此活動是私有的首選項。 – Tarun