0

我有一個Activity,當點擊菜單和一個按鈕出現在那裏,進入PreferenceActivity,然後加載三個ListPreferencesListPreference讓用戶選擇幾個值來更新遠程數據庫,我希望在應用程序暫停時保存這些值。Android偏好設置:保存在Activity或PreferenceActivity中

由於ListPreferencePreferenceActivity,我怎麼能得到這些值? 我應該在哪裏保存當前首選項狀態,在ActivityPreferenceActivity

這是我在Activity.java迄今所做的:

[...] 
private void updateFromPreferences() { 
     Context context = getApplicationContext(); 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
     callsFrequencyUpdate = Integer.parseInt(prefs.getString(Preferences.CALLS_FREQUENCY_PREF, "0")); 
     smsFrequencyUpdate = Integer.parseInt(prefs.getString(Preferences.SMS_FREQUENCY_PREF, "0")); 
     locationFrequencyUpdate = Integer.parseInt(prefs.getString(Preferences.LOCATION_FREQUENCY_PREF, "0")); 
    } 

    private void savePreferences() { 
     SharedPreferences activityPreferences = getPreferences(Activity.MODE_PRIVATE); 
     SharedPreferences.Editor editor = activityPreferences.edit(); 
     editor.putInt(Preferences.CALLS_FREQUENCY_PREF, callsFrequencyUpdate); 
     editor.putInt(Preferences.SMS_FREQUENCY_PREF, smsFrequencyUpdate); 
     editor.putInt(Preferences.LOCATION_FREQUENCY_PREF, locationFrequencyUpdate); 
     editor.commit(); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     savePreferences(); 
    } 

這是我Preferences.java文件:

public class Preferences extends PreferenceActivity { 
    public static final String CALLS_FREQUENCY_PREF = "CALLS_FREQUENCY_PREF"; 
    public static final String SMS_FREQUENCY_PREF = "SMS_FREQUENCY_PREF"; 
    public static final String LOCATION_FREQUENCY_PREF = "LOCATION_FREQUENCY_PREF"; 

    SharedPreferences prefs; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 

非常感謝提前!

回答

0

看起來應該無關緊要,如果這些值位於sharedPrefs中,那麼它們的寫入和讀取位置應該不重要。但是,如果您遇到問題,爲什麼不直接在主Activity中使用startActivityForResult()調用PreferenceActivity,而是使用PreferenceActivity中的onPause()將信息傳遞給intent.putExtras()中的bundle/intent並將其發回到你的主要活動與setResult(),完成()?然後用intent.getExtras()來拉動數據,然後在主Activity中做任何你想做的事情?對不起,如果我完全錯過了你所問的內容,但不是很清楚。

1

你問的是不是很清楚,因爲答案已經在問題...

  1. 數據單項上PreferenceActivity會自動保存

  2. 您可以訪問到SharedPreferences這樣

    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); 
    String value = pref.getString("name_of_my_pref", "default_value"); 
    
相關問題