自定义pref getString android
我有一个自定义Pref:自定义pref getString android,android,preferences,Android,Preferences,我有一个自定义Pref: public class ImagePreference2 extends Preference { private Drawable mIcon; Bitmap a; public ImagePreference2(final Context context, final AttributeSet attrs, final int defStyle) { super(context, attrs, defStyle);
public class ImagePreference2 extends Preference {
private Drawable mIcon;
Bitmap a;
public ImagePreference2(final Context context, final AttributeSet attrs, final int defStyle) {
super(context, attrs, defStyle);
this.setLayoutResource(R.layout.imagepref2);
}
}
我添加了如下内容:
<en.cold.ImagePreference2
android:key="test02"
android:summary="ImagePreference with default icon"
android:title="ImagePreference"
android:selectable="false"
android:defaultValue="defaultV"
/>
我得到一个错误:
01-26 16:00:35.031: E/AndroidRuntime(22564): FATAL EXCEPTION: main
01-26 16:00:35.031: E/AndroidRuntime(22564): java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:224)
01-26 16:00:35.031: E/AndroidRuntime(22564): at en.cold.Settings.onSharedPreferenceChanged(Settings.java:130)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:475)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:385)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.preference.Preference.tryCommit(Preference.java:1357)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.preference.Preference.persistBoolean(Preference.java:1623)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.preference.TwoStatePreference.setChecked(TwoStatePreference.java:83)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.preference.TwoStatePreference.onClick(TwoStatePreference.java:69)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.preference.Preference.performClick(Preference.java:957)
01-26 16:00:35.031: E/AndroidRuntime(22564
是否可以使用custompref获取字符串?从堆栈跟踪中,您的活动中似乎还有一个TwoStatePreference,这当然是布尔类型。您是否对此首选项使用了相同的键?必须有其他首选项定义。如果您的ImagePreference2只扩展了Preference,那么如果没有定义其他首选项,我看不出堆栈跟踪如何遇到TwoStatePreference。
01-26 16:00:35.031: E/AndroidRuntime(22564): FATAL EXCEPTION: main
01-26 16:00:35.031: E/AndroidRuntime(22564): java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:224)
01-26 16:00:35.031: E/AndroidRuntime(22564): at en.cold.Settings.onSharedPreferenceChanged(Settings.java:130)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:475)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:385)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.preference.Preference.tryCommit(Preference.java:1357)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.preference.Preference.persistBoolean(Preference.java:1623)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.preference.TwoStatePreference.setChecked(TwoStatePreference.java:83)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.preference.TwoStatePreference.onClick(TwoStatePreference.java:69)
01-26 16:00:35.031: E/AndroidRuntime(22564): at android.preference.Preference.performClick(Preference.java:957)
01-26 16:00:35.031: E/AndroidRuntime(22564