我在OnCreate中的OnClick函数中调用Dialog。在该对话框中,应用程序的用户可以向外部数据库添加内容。
现在我的问题是,当对话框消失(myDialog.dismiss())并且它返回到实际活动时,EditText正在聚焦。我的整个屏幕包含Spinners和TextViews,只有1个EditText。
奇怪的是,当活动首次被调用时,它会在活动之上显示统计信息(显示第一个Spinner而不会丢失EditText),但是当对话框被解除时,EditText会被聚焦。
我在活动代码
中的清单中有android:windowSoftInputMode="adjustResize|stateHidden"
我已经尝试将android:focusableInTouchMode="true"
放在XML中的EditText中,但这不起作用。
任何人都可以帮我找到我想要的东西吗?
提前致谢!
答案 0 :(得分:1)
Android将从顶部开始关注第一个可聚焦的视图,以便您可以尝试设置其他可聚焦的视图:)
答案 1 :(得分:0)
Android焦点有点随机,你无法真正控制它。您可以尝试禁用textview并在对话框消失时再次启用它,但我会反对它。
老实说,只要让Android做到这一点。我们试图在一个非常大的应用程序中反对焦点逻辑,并在经过多次尝试后放弃,并说服客户不值得麻烦。
答案 2 :(得分:0)
我一直有同样的问题。尝试:
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
hideSoftKeyboard();
}
});
private void hideSoftKeyboard() {
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
这适用于除了我的对话框中只有一个按钮的按钮之外的所有内容
onDismiss()
方法。将focusable=true
和focusableInTouchMode=true
添加到EditText上方的TextView(正如Jeppe Andersen所提到的)解决了这个问题。希望这会有所帮助。