Après un exemple d'Android Professional 2 Développement d'applications I mis en place une classe pref comme suit:Android: PreferenceActivity: Pourquoi cette vérification logique «simple» sur une valeur de préférence enregistrée n'évalue-t-elle pas?
//Preferences.java
public class Preferences extends PreferenceActivity{
public static final String PREF_SPEED_UNIT ="PREF_SPEED_UNIT";
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.userpreferences);
}
}
Dans ma classe d'activité:
// main.java
private static final int SHOW_PREFERENCES = 1;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SHOW_PREFERENCES)
updateFromPreferences();
if (resultCode == Activity.RESULT_OK) {
}
}
private void updateFromPreferences() {
Log.d(TAG, "updateFromPreferences()");
Context context = getApplicationContext();
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context);
// Set the SpeedMode string using object reference to custom view
mSpeedMode = prefs.getString(Preferences.PREF_SPEED_UNIT, "MPH");
speedview.SpeedMode = mSpeedMode;
}
// Using have a Button view that pops the options for testing
private OnClickListener optionbuttonCL = new OnClickListener() {
public void onClick(View v) {
Context context = getApplicationContext();
Intent i = new Intent(context, Preferences.class);
startActivityForResult(i, SHOW_PREFERENCES);
}
};
La question est ici:
// SpeedView.java
if (SpeedMode == "MPH"){
// set speed in miles/hour
}
if (SpeedMode == "KPH"){
//set speed in kilometers/hour
}
Cela fonctionne, cependant si je change de mode de vitesse à KPH (par défaut est MPH), l'affichage ne se met plus à jour. Ce qui est déconcertant est que SpeedMode soit "MPH" ou "KPH" en utilisant le débogueur Eclipse, les instructions if ne s'exécuteront pas.
Voici le reste du code:
//userpreferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference android:key="PREF_SPEED_UNIT"
android:title="Speed Unit"
android:summary="Choose between MPH or KPH"
android:entries="@array/speed_options"
android:entryValues="@array/speed_values"
android:dialogTitle="Speed Unitz"
android:defaultValue="MPH" />
</PreferenceScreen>
// arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="speed_options">
<item>MPH</item>
<item>KPH</item>
</string-array>
<string-array name="speed_values">
<item>MPH</item>
<item>KPH</item>
</string-array>
Merci
Oh mon Dieu ... Je savais qu'il fallait être quelque chose sous mon nez ... Leçon apprise! Merci beaucoup. Je vais écouter votre conseil! – Danedo