Android - Edittext在对话后获得焦点

时间:2013-10-14 07:59:17

标签: android android-activity focus android-edittext

我在OnCreate中的OnClick函数中调用Dialog。在该对话框中,应用程序的用户可以向外部数据库添加内容。

现在我的问题是,当对话框消失(myDialog.dismiss())并且它返回到实际活动时,EditText正在聚焦。我的整个屏幕包含Spinners和TextViews,只有1个EditText。

奇怪的是,当活动首次被调用时,它会在活动之上显示统计信息(显示第一个Spinner而不会丢失EditText),但是当对话框被解除时,EditText会被聚焦。

我在活动代码

中的清单中有android:windowSoftInputMode="adjustResize|stateHidden"

我已经尝试将android:focusableInTouchMode="true"放在XML中的EditText中,但这不起作用。

任何人都可以帮我找到我想要的东西吗?

提前致谢!

3 个答案:

答案 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=truefocusableInTouchMode=true添加到EditText上方的TextView(正如Jeppe Andersen所提到的)解决了这个问题。希望这会有所帮助。