类强制转换异常:无法从Checkboxpreference转换为SwitchPreference



我无法用代码识别问题,而且似乎没有人面临这种问题,因此无法跟踪堆栈中的溢出。

异常消息:

Caused by: java.lang.ClassCastException: android.preference.CheckBoxPreference cannot be cast to android.preference.SwitchPreference

代码:

private Preference preference;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    addPreferencesFromResource(R.xml.settings);
    loadAllViews();
}
private void loadAllViews()
{
   if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH)
   {
        preference = (SwitchPreference) findPreference("preference"); //Exception occurs here.
   }
   else
   {
        preference = (CheckBoxPreference) findPreference("preference");
   }
}
__________________    __________________    __________________

settings.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <CheckBoxPreference
        android:key="preference"
        android:title="yes_or_no" />
</PreferenceScreen>

请有人帮我弄清楚。

CheckBoxPreference不是extends SwitchPreference;这两个类都是TwoStatePreference的子类。

从您的代码中,您似乎引用了两个不同偏好组件的一个偏好键:

  if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH)
   {
        preference = (SwitchPreference) findPreference("preference"); //Exception occurs here.
   }
   else
   {
        preference = (CheckBoxPreference) findPreference("preference");
   }

正如您所看到的,这将适用于正确的首选项类型,但它将为不正确的类型抛出ClassCastException。确保您引用的是正确TwoStatePreference的正确密钥。

<?xml version="1.0" encoding="utf-8"?>

<SwitchPreference
    android:key="preference1"
    android:title="yes_or_no" />
<CheckBoxPreference
    android:key="preference2"
    android:title="yes_or_no" />

在代码中:

偏好偏好

if(VERSION.SDK_INT>=VERSION_CODES.ICE_CREAM_SANDWICH(

preference=(SwitchPreference(findPreference("preference1"(
}
其他

preference=(CheckBoxPreference(findPreference("preference2"(
}

需要有两个独立的布局。

一个用于布局目录中的检查首选项。

另一个用于layout-v14目录中的SwitchPreference。

相关内容

  • 没有找到相关文章

最新更新