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

标签 android android-edittext preferences

我已经使 EditTextPreference 'textPasscode' 依赖于 CheckBoxPreference 'checkBoxPasscode'。我希望“textPasscode”在用户选中复选框后立即打开。这有可能吗? 如果是,我可以在 onSharedPreferenceChanged() 函数中使用什么?

public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
    if(key.contentEquals("checkBoxPasscode")){
       // ----some method to open edit text "textPasscode" ??
    }
}

最佳答案

这个问题对我来说很烦人,所以在实现 Sandor 的建议后,我在 Android Reference 中搜索了更好的解决方案,看看我找到了什么。
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,因为我想要 pre-honeycomb 兼容性,但我认为这段代码变化不大。

关于android - 通过代码(以编程方式)打开 EditTextPreference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396588/

相关文章:

android - 在 Gradle 中为 Android 中的库项目构建变体

javascript - 通过 Web 应用程序在客户端存储用户偏好的标准方法

java - 如何处理 Android 键盘 (IME) 中的配置更改?

android - 在 Firestore 中阅读用户未阅读的信件

android - 用户10056和当前进程都没有android.permission.MODIFY_PHONE_STATE

android - 如何检测EditText得到了Android的关注。不是最终用户触摸编辑文本?

android - android中EditView中的可点击链接和复制/粘贴菜单

java - 以下代码没有设置小部件在另一个 Activity 中可见的功能

java - 获取单击按钮的文本?

android - 取消聚焦屏幕上的所有 EditText