我现在正在为我的应用创建一个偏好页面
在 API-14 之后,switchpreference 可用。我想用它来替换 API14+ 设备上的复选框首选项
很容易使用res/xml
和res/xml-14
获取正确的xml资源
但是在编码部分,根据API切换preference并不是那么方便。
public class SettingActivity extends PreferenceActivity {
private CheckBoxPreference enable;
private SwitchPreference enablev14;
@Override
protected void onCreate(Bundle savedInstanceState) {
addPreferencesFromResource(R.xml.setting);
if (Build.VERSION.SDK_INT < 14)
enable = (CheckBoxPreference) findPreference(key_enable);
else
enablev14 = (SwitchPreference) findPreference(key_enable);
}
...
}
现在我的方法是用if-clause来检查Build.VERSION
,并得到相应的对象来处理它。
但是管理代码非常不方便和困难。
有没有人有更聪明的方法来做到这一点?
最佳答案
也许你可以为你的 SwitchPreference 和 CheckBoxPreference xml 设置一个 android:key
属性,就像这样:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="pref_sync"
android:title="@string/pref_sync"
android:defaultValue="true" />
</PreferenceScreen>
和
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:key="pref_sync"
android:title="@string/pref_sync"
android:defaultValue="true" />
</PreferenceScreen>
然后您可以检查此键在您的代码中是否返回 true 或 false,如下所示:
public class SettingActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
addPreferencesFromResource(R.xml.setting);
PreferenceManager preferenceManager = getPreferenceManager();
if (preferenceManager.getSharedPreferences().getBoolean("pref_sync", true)){
// Your switch is on
} else {
// Your switch is off
}
...
}
希望这对你有用。
关于java - 代码中的 SwitchPreference 和 CheckBoxPreference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18414267/