Следуя примеру из Профессиональной разработки приложений для Android 2, я настроил класс pref следующим образом:
//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);
}
}
В моем классе активности:
// 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);
}
};
Проблема здесь:
// SpeedView.java
if (SpeedMode == "MPH"){
// set speed in miles/hour
}
if (SpeedMode == "KPH"){
//set speed in kilometers/hour
}
Это работает, однако, если я переключаю режимы скорости в KPH (по умолчанию MPH), дисплей больше не обновляется.
Недоумение, даже если SpeedMode отображается как «MPH»"или" KPH "с использованием отладчика Eclipse, операторы if не будут выполняться.
Вот остаток кода:
//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>
Спасибо