Dim*_*Dim 8 android android-settings
我是新手PreferenceActivity.我的问题是如何通过更改其他首选项来启用和禁用首选项屏幕中的选项?
我的prefs.xml:
<ListPreference
android:entries="@array/units"
android:entryValues="@array/lunits"
android:key="listUnits"
android:summary="Units schosssing"
android:title="Units" android:defaultValue="C"/>
<ListPreference
android:entries="@array/palette"
android:entryValues="@array/lpalette"
android:key="listpalette"
android:summary="Palette schosssing"
android:title="Palette"
android:defaultValue="1"/>
Run Code Online (Sandbox Code Playgroud)
在listUnits有2个选项,摄氏和华氏,因此,如果用户选择摄氏listpalette应该得到允许,如果用户选择华氏被禁用,我怎么能做到这一点?
我的设置活动:
public class SettingsActivity extends PreferenceActivity
{
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
}
public static class MyPreferenceFragment extends PreferenceFragment
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
}
Run Code Online (Sandbox Code Playgroud)
nis*_*3a5 17
此代码可能对您有用.可以作为参考.
首先获取两个ListPreference的实例并应用此方法.
ListPreference mlistUnits, mlistPalette;
mlistUnits= (ListPreference)findPreference("listUnits");
mlistPalette= (ListPreference)findPreference("listpalette");
mlistUnits.setEnable(false);
mlistPalette.setEnabled(true);
Run Code Online (Sandbox Code Playgroud)
并使用下面的列表
OnPreferenceChangeListener listener = new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// newValue is the value you choose
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
将侦听器应用于ListPreference
mlistPalette.setOnPreferenceChangeListener(listener);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7259 次 |
| 最近记录: |