android - PreferenceActivity 中的启用和禁用选项

标签 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"/>

listUnits 中有 2 个选项,Celsius 和 Fahrenheit,所以如果用户选择 Celsius,listpalette 应该被启用,如果用户选择 Fahrenheit 将被禁用,如何我这样做?

我的设置 Activity :

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);
        }
    }

}

最佳答案

此代码可能对您有用。可以作为引用。

首先获取两个 ListPreference 的实例并应用此方法。

ListPreference mlistUnits, mlistPalette;
mlistUnits= (ListPreference)findPreference("listUnits");
mlistPalette= (ListPreference)findPreference("listpalette");

mlistUnits.setEnable(false);
mlistPalette.setEnabled(true);

并使用下面的监听器

OnPreferenceChangeListener listener = new OnPreferenceChangeListener() {    
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
    // newValue is the value you choose
    return false;
}
};

将监听器应用于 ListPreference

mlistPalette.setOnPreferenceChangeListener(listener);

关于android - PreferenceActivity 中的启用和禁用选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20761543/

相关文章:

javascript - PhoneGap : ReferenceError: Connection is not defined

java - 不兼容的类型,发现 List<capture<?仅在 Java 8 中扩展模型>>

android - 请帮助阐明 Android 中设置 Activity 的当前标准

android - 如何从另一个 Activity 访问设置 Activity 中的复选框值?

android - 限制 Android 中的应用程序缓存大小

java - Android AsyncTask 语法错误

Android - 在两个应用程序之间共享资源

android - 如何使用camera2 API获取物体到Android设备的距离

java - 如何使用 SeekBar 以编程方式调整设备亮度?

android - 操作栏设置不显示