Android 为什么可以';难道没有人把一个优先权投给一个优先权吗?(安卓)
考虑到这个继承树Android 为什么可以';难道没有人把一个优先权投给一个优先权吗?(安卓),android,android-fragments,Android,Android Fragments,考虑到这个继承树 java.lang.Object ↳ android.preference.Preference ↳ android.preference.DialogPreference ↳ android.preference.ListPreference 当我试着去做 myListPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
java.lang.Object
↳ android.preference.Preference
↳ android.preference.DialogPreference
↳ android.preference.ListPreference
当我试着去做
myListPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
我得到这个编译错误:
方法
在中设置OnPreferenceClickListener(Preference.OnPreferenceClickListener)
类型首选项不适用于参数(新
OnPreferenceClickListener(){})
当我尝试的时候
myListPreference = getPreferenceManager().findPreference(DISPLAY_MESSAGE);
类型不匹配:无法从首选项转换为ListPreference
这两个问题没有关系
问题1:
您可能缺少导入语句。请尝试新建首选项。改用OnPreferenceClickListener()
,或添加导入首选项。OnPreferenceClickListener
问题2:
不能隐式向上投射对象,只能隐式向下投射。必须执行此操作myListPreference=(ListPreference)getPreferenceManager().FindReference(显示消息)代码>
供日后参考:
SubClass obj = getSuperClass(); // Not Valid, must cast
SuperClass obj = getSubClass(); // Valid
您不是在尝试将首选项转换为ListPreference吗?继承只有一个way@panini但是如果我的运行时实例是一个ListPreference,那么我应该能够downcastYeah,但是编译器不知道您的运行时实例是一个ListPreference,它所能看到的只是PreferenceManager##findPreference()返回一个首选项。如果愿意,您可以显式地强制转换它。@panini好的,但是为什么我不能在ListPreference上设置首选项ClickListener()
,因为它是首选项?