通过代码(以编程方式)打开EditTextPreference

| 我已经使EditTextPreference \'textPasscode \'依赖于CheckBoxPreference \'checkBoxPasscode \'。我希望用户选中复选框后立即打开“ textPasscode”。甚至可以吗? 如果是,我可以在“ 0”功能中使用什么?
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
    if(key.contentEquals(\"checkBoxPasscode\")){
       // ----some method to open edit text \"textPasscode\" ??
    }
}
    
已邀请:
        这个问题令我非常烦恼,因此在实施Sandor建议后,我在Android参考中搜索了更好的解决方案,然后查找了发现的内容。 EditTextPreference继承自DialogPreference,并且该类具有showDialog方法,因此我使用show方法从EditTextPreference中创建了一个新类,它的工作方式像一个超级按钮。 这是一些代码:
public class MyEditTextPref extends EditTextPreference {
    //...constructor here....

    public void show() {
        showDialog(null);
    }
}
在我的settings.xml中(我用来生成ActivitySettings布局的地方)我添加了myEditTextPref
<package.that.contains.MyEditTextPreferences 
    android:key=\"myPref\"
    android:title=\"@string/pref_title\"
    android:summary=\"@string/pref_summary\"
    android:dialogTitle=\"@string/dialog_title\"
    android:dialogMessage=\"@string/dialog_message\"
/>
我要做的最后一件事是PreferenceActivity中的onSharedPreferenceChanged方法
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    if (key.equalsIgnoreCase(MY_CHECK_BOX)) {
        MyEditTextPreferences myPref = (MyEditTextPreferences) findPreference(\"myPref\");
        myPref.show();
    }
}
ps .:实际上,我不使用PreferenceFragment,因为我想要蜂窝前的兼容性,但是我认为这段代码变化不大。     
        我遇到了同样的问题。 我想知道这不是一个普遍的问题,因为网上搜索的结果如此之少。 尽管有一个明显的解决方法,但似乎无法从代码中手动显示EditTextPreference。 通过创建警报对话框并处理“确定”按钮的onclick事件,可以实现相同的外观和行为。 这是文本输入对话框的简单通用代码:
public static EditText showInputDialog(Context context, OnClickListener clickListener, String message)
{
    LayoutInflater factory = LayoutInflater.from(context);
    final View textEntryView = factory.inflate(R.layout.dialogedittext, null);              
    final EditText editText = (EditText)textEntryView.findViewById(id.dialogEditText);
    final AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder     
    .setTitle(message)
    .setView(textEntryView)
    .setPositiveButton(\"OK\", clickListener)
    .setNegativeButton(\"Cancel\", null).show();
    return editText;
}   
只需传入一个OnClickListener并在那里处理首选项设置即可。 不要忘记设置一个EditText变量来接收用户输入的输入字符串。 我希望这可以为搜索此问题的人节省时间。     

要回复问题请先登录注册