Android 为什么我的use SwitchPreference出现异常
我想在api>=14时使用SwitchPreference sToggle,在apiAndroid 为什么我的use SwitchPreference出现异常,android,android-preferences,togglebutton,android-2.2-froyo,verifyerror,Android,Android Preferences,Togglebutton,Android 2.2 Froyo,Verifyerror,我想在api>=14时使用SwitchPreference sToggle,在apiSwitchPreference sToggle时使用CheckBoxPreference chToggle由您的代码定义,即使在API级别
SwitchPreference sToggle时使用CheckBoxPreference chToggle代码>由您的代码定义,即使在API级别<14时也是如此。我想这是个例外
该类在这些API级别上根本不存在,因此您不能使用它。甚至在代码中都没有提到。或者严格地说:不要做任何加载该类的事情
但是,您可以将sToggle声明为存在的超类型的变量,例如
public class SettingsActivity extends PreferenceActivity {
Preference sToggle;
然后将使用SwitchPreference的代码移动到另一个未加载到较低API级别的类中。例如
class ToggleNew {
public static Preference getToggle() {
return new SwitchPreference();
}
}
class ToggleOld {
public static Preference getToggle() {
return new CheckboxPreference();
}
}
原始类现在可以动态使用/加载所需的版本
Preference p;
if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
p = ToggleNew.getToggle();
} else {
p = ToggleOld.getToggle();
}
您需要稍微调整一下,但这是如何在某些API级别上使用类而不是在其他API级别上使用类的一般方法。使用SwitchPreferenceCompat而不是SwitchPreference。谢谢!回答得好!如果我想将setChecked方法添加到简单组件首选项中,我将首选项转换为SwitchPreference或CheckBoxPreference,代码为((SwitchPreference)sToggle)。setChecked(false);或((复选框首选项)sToggle.setChecked(false);
public class SettingsActivity extends PreferenceActivity {
Preference sToggle;
class ToggleNew {
public static Preference getToggle() {
return new SwitchPreference();
}
}
class ToggleOld {
public static Preference getToggle() {
return new CheckboxPreference();
}
}
Preference p;
if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
p = ToggleNew.getToggle();
} else {
p = ToggleOld.getToggle();
}