【发布时间】:2013-12-09 00:45:51
【问题描述】:
我有一个简单的DialogFragment,其中包含一个EditText。创建DialogFragment 时,软键盘会立即显示,EditText 会立即获得焦点,方法是:
mEditText.requestFocus();
getDialog().getWindow().setSoftInputMode(
LayoutParams.SOFT_INPUT_STATE_VISIBLE);
事实上,我所拥有的基本上就像这个博客中给出的例子:
http://android-developers.blogspot.co.uk/2012/05/using-dialogfragments.html
按下后退按钮时,我希望 DialogFragment 被关闭。实际发生的是,第一次按下后退按钮会导致软键盘被隐藏。要关闭DialogFragment,需要进一步的后按。
我很惊讶似乎没有一个简单的 API 解决方案(例如设置标志),因为我认为这是一个常见的要求。
在 SO 上进行搜索后,最好的选择似乎是检测软键盘何时被隐藏,然后在该事件上调用 dismiss()。检测软键盘隐藏的可能解决方案有:
EditText with soft keyboard and "Back" button
How to check visibility of software keyboard in Android?
在我继续使用上述解决方案之一之前,我是否应该考虑通过单击后退按钮关闭整个 DialogFragment 和软键盘?
【问题讨论】:
标签: android android-dialogfragment