Android:CheckBoxPreference启用/禁用电子邮件地址inputtype(覆盖默认设置)

时间:2011-04-30 22:37:51

标签: android android-preferences android-softkeyboard

大家好,我正在尝试创建一个活动,以便在启用CheckBox首选项(true)时,以编程方式将屏幕键盘InputType更改。我希望用户可以选择打开/关闭键盘的电子邮件地址选项,同时保持inputType已经设置。

基本上相当于改变:

android:inputType="textAutoCorrect|textCapSentences|textMultiLine"

android:inputType="typeAutoCorrect|textCapSentences|textmultiLine|textEmailAddress"

Preferences.xml

<CheckBoxPreference android:key="pref_key_enable_email"
                    android:title="@string/pref_title_enable_email"
                    android:summary="@string/pref_summary_enable_email"
                    android:defaultValue="false" />

这就是我现在所拥有的。

public void setInputType(int type) {
    boolean showEmail = false;
    // Show the Email keyboard if the pref_key_enable_email preference is TRUE
    mTextEditor = (EditText) findViewById(R.id.embedded_text_editor);
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    if(prefs.getBoolean("pref_key_enable_email",false)== true){
        showEmail = true;      
            if (showEmail) {
                mTextEditor.setInputType(InputType.TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_ADDRESS); w
           } else {
                mTextEditor.getInputType();
                }
            }

我检查了/ data / data / myappname / shared_prefs com.myappnamehere.preferences.xml。我至少知道当选中该框时,布尔值 do 从false变为true。它只是没有做任何事情:(

1 个答案:

答案 0 :(得分:0)

考虑清理一下代码

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean showEmail = prefs.getBoolean("pref_key_enable_email",false);
mTextEditor = (EditText) findViewById(R.id.embedded_text_editor);

if(showEmail) {
    mTextEditor.setInputType( mTextEditor.getInputType() | TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
}

我假设你的布局在xml中有你的“默认”标志:

android:inputType="textAutoCorrect|textCapSentences|textMultiLine"