是否可以将EditTextPreference与CheckBoxPreference结合使用?

Cod*_*ate 7 android preferenceactivity

我有一个PreferenceActivity,其中包括一个包含呼叫前转选项的类别.我想要的是偏好:

  • 如果用户按下右侧的复选框,则启用/禁用.
  • 如果用户按下文本(或首选项中的任何其他内容),则打开EditTextPreference对话框

它可能没有任何用处,但这里有一个特殊偏好类别的片段:

    <PreferenceCategory
        android:title="@string/category_callforward">

    <EditTextPreference
            android:key="call_forward_always"
            android:title="@string/call_forward_always"
            android:summary="@string/call_forward_forwardto" />
    </PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)

编辑

如果可能的话,我想在这个方法中实现它:

    // Locates the correct data from saved preferences and sets input type to numerics only
private void setCallForwardType()
{
    ep1 = (EditTextPreference) findPreference("call_forward_always");

    EditText et = (EditText) ep1.getEditText();
    et.setKeyListener(DigitsKeyListener.getInstance());

}
Run Code Online (Sandbox Code Playgroud)

EDIT2

如果有人还在想 - 这就是我想要的偏好:

http://i.imgur.com/GHOeK.png

EDIT3

我现在已经搜索了几个小时,并提出了一个单词:'PreferenceGroupAdapter'.但是,我没有找到示例或教程向我展示如何使用它.建议?这甚至是正确的道路吗?

EDIT4

如果这真的不可能,我非常希望我可以实现的替代(用户友好)解决方案的建议,而不是组合的Edit-和Checkbox偏好.

Ogu*_*han 2

你可以这样做。首先,为首选项创建一个类,该类应从PreferenceActivity. 像这样使用:

// editbox ise your EditTextPreference, so set it.  
checkbox = (CheckBoxPreference) findPreference("checkbox_preference");

checkbox.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if(newValue.toString().equals("false")) {
            PrefActivity.this.editbox.setEnabled(false);
        } else if(newValue.toString().equals("true")) {
            PrefActivity.this.editbox.setEnabled(true);
        }
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

我希望它有帮助。