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

Android:CheckBoxPreference启用/禁用电子邮件地址输入类型(覆盖默认设置),android,android-preferences,android-softkeyboard,Android,Android Preferences,Android Softkeyboard,大家好,我正在尝试创建一个活动,以便在启用复选框首选项为true时,以编程方式更改屏幕上的键盘输入类型。我希望用户可以选择打开/关闭键盘的电子邮件地址选项,同时保持已设置的输入类型 基本上做的就是改变: android:inputType="textAutoCorrect|textCapSentences|textMultiLine" 到 Preferences.xml <CheckBoxPreference android:key="pref_key_enable_email"

大家好,我正在尝试创建一个活动,以便在启用复选框首选项为true时,以编程方式更改屏幕上的键盘输入类型。我希望用户可以选择打开/关闭键盘的电子邮件地址选项,同时保持已设置的输入类型

基本上做的就是改变:

android:inputType="textAutoCorrect|textCapSentences|textMultiLine"

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" />

我已经检查了/data/data/myappname/shared_prefs com.myappnamehere.preferences.xml。我至少知道,当复选框被选中时,布尔值确实会从false变为true。它没有任何作用:

考虑一下清理一下代码

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" 

谢谢你的意见。是的,我设置了那些默认标志。但是更改代码并没有导致任何不同-inputType仍然保持不变。另外,作为旁注,最后一行需要有InputType。在键入_TEXT _VARIATION _EMAIL之前添加,除了所有内容都能够正确解决之外。
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);
}
android:inputType="textAutoCorrect|textCapSentences|textMultiLine"