How to enable a preference in my android application when other preference is disabled?

后端 未结 4 1415
既然无缘
既然无缘 2021-01-01 13:52

I have used PreferenceActivity to have preference in my android application. I want one preference say \"pref 2\" to be enabled when other preference say \"pref

相关标签:
4条回答
  • 2021-01-01 14:13

    Android CheckBox??


    I am assuming you are using the Android.widget.checkBox:

    http://developer.android.com/reference/android/widget/CheckBox.html

    Try this

     public class MyActivity extends Activity {
         protected void onCreate(Bundle icicle) {
             super.onCreate(icicle);
    
             setContentView(R.layout.content_layout_id);
    
             final CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkbox_id);
             if (checkBox1.isChecked()) {
                 checkBox2.setChecked(false);
             }
         }
     }
    

    GoodLUCK!!

    0 讨论(0)
  • 2021-01-01 14:27

    I don't think there's any out-of-the-box solution for it, i.e. an inverted dependancy attribute. But there's always the click-listener:

    preference1.setOnPreferenceClickListener(pref1_click);
    
    ....
    
    private OnPreferenceClickListener pref1_click = new OnPreferenceClickListener() {
        public boolean onPreferenceClick(Preference preference) {
            preference2.setEnabled(!preference1.isChecked());
            return true;
        }
    }
    
    0 讨论(0)
  • 2021-01-01 14:28

    According to the docs here, you can add an attribute to the CheckBoxPreference tag like so:

    android:disableDependentsState="true"
    

    By default this is false, which means that the dependents are disabled when the checkbox is unchecked, but by setting it to true, it should have the opposite effect.

    0 讨论(0)
  • Yes it's possible to do this out of the box. Let's say you want to disable pref2 when pref1 is off
    Here's the code(preference xml layout) to put in for pref1:

    <CheckBoxPreference
        android:title="Pref1"
        android:key="pref1">
    </CheckBoxPreference>
    

    Here's the code(preference xml layout) to put in for pref2:

    <EditTextPreference
        android:dialogMessage="Pref 2 dialog"
        android:title="Pref2"
        android:key="pref2" 
        android:dependency="pref1">
    </EditTextPreference>
    

    Like sigmazero13 said, by default disableDependentsState is false so you don't need to include it in the pref1 attributes.

    0 讨论(0)
提交回复
热议问题