Chi*_*man 9 java xml android android-preferences
我现在正在为我的应用创建首选项页面
在API-14之后,可以使用switchpreference.我想用它来取代API14 +设备上的checkboxpreference
它易于使用res/xml
并res/xml-14
获得正确的xml资源
但是,在编码部分,根据API切换偏好并不方便.
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);
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在我的方法是使用if子句检查Build.VERSION
并获取相应的对象来处理它.但是管理代码非常不方便.有人有更聪明的方法吗?
Ren*_*ari 14
也许你可以android:key
为你的SwitchPreference和CheckBoxPreference xml 设置一个属性,就像这样:
<?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>
Run Code Online (Sandbox Code Playgroud)
和
<?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>
Run Code Online (Sandbox Code Playgroud)
然后你可以检查这个键是否在你的代码中返回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
}
...
}
Run Code Online (Sandbox Code Playgroud)
希望这对你有用.
小智 6
在Java代码中使用TwoStatePreference
,这是两个父类CheckBoxPreference
和SwitchPreference
.它具有您在用例中可能需要的所有方法.
这就是您提供的代码示例:
public class SettingActivity extends PreferenceActivity {
private TwoStatePreference enable;
@Override
protected void onCreate(Bundle savedInstanceState) {
addPreferencesFromResource(R.xml.setting);
enable = (TwoStatePreference) findPreference(key_enable);
}
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23001 次 |
最近记录: |