如何解决通过代码以编程方式打开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变量来接收用户输入的输入字符串。
我希望这可以为搜索此问题的人节省时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。