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()
,因为它是首选项?