簡體   English   中英

onPreferenceClick無法與我合作

[英]onPreferenceClick is not working with me

我試圖在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>

以及xml文件夾中的settings.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(" ", ""));
    }
}

它給了我這個錯誤:

05-24 11: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

我認為您必須在onPause()和onStart()方法中的sharedPreferenceChangeListener上注冊對象

看這里: https : //stackoverflow.com/a/16449611/2924941

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM