我試圖在我的onPreferenceClick做一些代碼,但它沒有奏效。onPreferenceClick不與我合作
我做了一個SettingActivity Calss,並擴展了PreferenceActivity。
然後我實現了OnPreferenceClickListener。
這裏是我的設置活動課
DecimalFormat df = new DecimalFormat("@##,###,###,###");
private Calculation mCalculation;
private TextView mCalculatorDisplay;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
@SuppressWarnings("deprecation")
@Override
public boolean onPreferenceClick(Preference preference) {
if (preference.getKey().equals("Point")) {
mCalculatorDisplay.setText(df.format(mCalculation.getResult()).replaceAll(",", "."));
} else if (preference.getKey().equals("Comma")) {
mCalculatorDisplay.setText(df.format(mCalculation.getResult()).replaceAll(".", ","));
} else if (preference.getKey().equals("Space")) {
mCalculatorDisplay.setText(df.format(mCalculation.getResult()).replaceAll(",", " "));
} else if (preference.getKey().equals("Off")) {
mCalculatorDisplay.setText(df.format(mCalculation.getResult()).replaceAll(" ", ""));
getPreferenceManager().getSharedPreferences().edit()
.putInt("unreadcount", 0).commit();
}
return true;
}
這裏是我的arrays.xml
<string-array name="decimalNumber">
<item name="P">Point</item>
<item name="C">Comma</item>
<item name="S">Space</item>
<item name="O">Off</item>
</string-array>
<string-array name="decimalNumberValues">
<item name="P">P</item>
<item name="C">C</item>
<item name="S">S</item>
<item name="O">O</item>
</string-array>
而且在settings.xml的文件夾中的xml:
<PreferenceCategory android:title="@string/pref_user_settings" >
<ListPreference
android:entries="@array/decimalNumber"
android:entryValues="@array/decimalNumberValues"
android:key="prefdecimalNumber"
android:summary="@string/number_format_summary"
android:title="@string/number_format" />
</PreferenceCategory>
這裏是一個照片我的用戶設置:
我想要做的是通過點擊每一個改變十進制數字格式的方式。
感謝提前:)
更新:我這樣做是爲了註冊PreferenceClickListener。
@SuppressWarnings("deprecation")
@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(
(OnSharedPreferenceChangeListener) this);
}
@SuppressWarnings("deprecation")
@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(
(OnSharedPreferenceChangeListener) this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("Point")) {
mCalculatorDisplay.setText(df.format(mCalculation.getResult())
.replaceAll(",", "."));
} else if (key.equals("Comma")) {
mCalculatorDisplay.setText(df.format(mCalculation.getResult())
.replaceAll(".", ","));
} else if (key.equals("Space")) {
mCalculatorDisplay.setText(df.format(mCalculation.getResult())
.replaceAll(",", " "));
} else if (key.equals("Off")) {
mCalculatorDisplay.setText(df.format(mCalculation.getResult())
.replaceAll(" ", ""));
}
}
它給我這個錯誤:
十一月5日至24日:10:24.127:E/AndroidRuntime(1025):了java.lang.RuntimeException:無法恢復活動{com.com.ecalc/com.com.ecalc.Z_SettingsActivity}:java.lang.ClassCastException:com.com.ecalc.Z_SettingsActivity無法轉換爲android.content.SharedPreferences $ OnSharedPreferenceChangeListener
嘿,謝謝。我更新了我的問題,請你檢查一下。 – user3051834
是不是實現OnSharedPreferenceChangeListener的對象?你怎麼稱呼它? – migos
其實現OnPreferenceClickListener – user3051834