我遇到了一些麻烦SharedPreferences
。看起来它们没有通过我的不同活动共享(例如,我的偏好保存在我的活动中,PreferencesActivity
但在我的其他活动中不可用)
这是我的 PrefencesActivity 的代码:
public class SettingsActivity extends SherlockPreferenceActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Creating the ActionBar
ActionBar mActionBar = getSupportActionBar();
mActionBar.setHomeButtonEnabled(true);
mActionBar.setDisplayShowHomeEnabled(true);
mActionBar.setDisplayHomeAsUpEnabled(true);
// Getting the preferences
SharedPreferences preferences = getApplicationContext().getSharedPreferences("PreferencesFile", getApplicationContext().MODE_PRIVATE);
getPreferenceManager().setSharedPreferencesName("PreferencesFiles");
addPreferencesFromResource(R.xml.preferences);
}
}
首选项.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="Informations utilisateur">
<EditTextPreference
android:key="id_utilisateur"
android:title="Identifiant"
android:summary="Votre identifiant Hangin\'Around"
android:dialogTitle="Identifiant Hangin\'Around :" />
<EditTextPreference
android:key="mdp_utilisateur"
android:title="Mot de passe"
android:summary="Votre mot de passe sur Hangin\'Around"
android:dialogTitle="Mot de passe Hangin\'Around :" />
</PreferenceCategory>
<PreferenceCategory
android:title="Alerte de chute">
<EditTextPreference
android:key="num_contact"
android:title="Numéro à contacter"
android:summary="Le numéro auquel un SMS sera envoyé en cas de chute"
android:dialogTitle="Numéro à contacter en cas de chute :" />
<EditTextPreference
android:key="nom"
android:title="Nom présenté"
android:summary="Le nom auquel vous serez présenté à votre contact"
android:dialogTitle="Nom présenté :" />
<CheckBoxPreference
android:key="confirm"
android:title="Confirmation de le chute"
android:summary="Affichera un message vous demandant de confirmer l'envoi d'un message d'alerte de chute" />
</PreferenceCategory>
<PreferenceCategory
android:title="Gestion des modèles de mouvement">
<PreferenceScreen
android:title="Enregistrer un nouveau modèle">
<intent android:action=".EnregistrementActivity"/>
</PreferenceScreen>
<PreferenceScreen
android:title="Gérer les modèles de mouvement">
<intent android:action=".GestionModelesActivity"/>
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
以下是我在活动中获得偏好的方式:
protected void onCreate(Bundle savedInstanceState) {
//creating the activity and stuffs
// Getting my preferences
SharedPreferences preferences = getApplicationContext().getSharedPreferences("PreferencesFile", getApplicationContext().MODE_PRIVATE);
numContact = preferences.getString("num_contact", null);
nomUser = preferences.getString("nom", null);
confirm = preferences.getBoolean("confirm", false);
modeleChute = preferences.getString("modele_chute", null);
Log.d(TAG, "numContact = " + numContact + " - nomUser = " + nomUser + " - modeleChute = " + modeleChute);
}
日志显示(modeleChute 来自另一个活动):
01-14 17:04:40.444: D/MainActivity(13277): numContact = null - nomUser = null - modeleChute = Immobile
难道我做错了什么 ?(大概吧)