按照 Professional Android 2 Application Development 的示例,我设置了一个 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),则显示不再更新。
令人困惑的是,即使使用 Eclipse 调试器将 SpeedMode 显示为“MPH”或“KPH”,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>
谢谢