onPreferenceClick에서 일부 코드를 시도했지만 작동하지 않았습니다.onPreferenceClick이 나와 작동하지 않습니다
나는 SettingActivity Calss를 만들었고 나는 PreferenceActivity를 확장했다.
그런 다음 OnPreferenceClickListener를 구현합니다. 여기
는 XML 폴더 내 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의 내 설정 작업 클래스 다음
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;
}
입니다 :
<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 등록이했다.
11월 5일에서 24일까지 : 10 :
@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(" ", ""));
}
}
그 날이 오류를 제공 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