0

我在 OnCreate 的 OnClick 函数中调用一个对话框。在该对话框中,应用程序的用户可以将某些内容添加到外部数据库。

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

奇怪的是,当第一次调用 Activity 时,它统计在 Activity 之上(显示第一个 Spinner 而不是关注 EditText),但是当对话框被关闭时,EditText 被聚焦。

android:windowSoftInputMode="adjustResize|stateHidden"在活动标签内的清单中

而且我也尝试将android:focusableInTouchMode="true"EditText 放入 XML 中,但这没有用。

谁能帮我找到我要找的东西?

提前致谢!

4

3 回答 3

1

Android 将从顶部聚焦第一个可聚焦的视图,因此您可以尝试设置其他可聚焦的视图:)

于 2013-10-14T08:40:49.273 回答
0

Android 的焦点有点随机,你无法真正控制它。您可以尝试禁用 textview 并在对话框消失时再次启用它,但我建议不要这样做。

老实说,就让安卓来做吧。我们试图在一个非常大的应用程序中反对焦点逻辑,并在多次尝试后放弃并说服客户不值得麻烦。

于 2013-10-14T08:30:18.133 回答
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()方法的按钮之外的所有内容。在我的 EditText 上方添加focusable=truefocusableInTouchMode=true到 TextView (正如 Jeppe Andersen 提到的)解决了这个问题。希望这可以帮助。

于 2015-06-11T16:01:59.600 回答