0

OnCreate の OnClick 関数でダイアログを呼び出しています。そのダイアログで、アプリのユーザーは外部データベースに何かを追加できます。

今私の問題は、ダイアログが消えて ( myDialog.dismiss() )、実際のアクティビティに戻ると、EditText がフォーカスされることです。EditText を 1 つだけ除いて、画面全体に Spinner と TextView が含まれています。

奇妙なことに、アクティビティが最初に呼び出されると、アクティビティの上に統計が表示されますが (最初のスピナーが表示され、EditText がフォーカスされません)、ダイアログが閉じられると、EditText がフォーカスされます。

android:windowSoftInputMode="adjustResize|stateHidden"アクティビティ タグ内のマニフェストを取得しました

またandroid:focusableInTouchMode="true"、XML にも EditText を入れようとしましたが、うまくいきませんでした。

探しているものを見つけるのを手伝ってくれる人はいますか?

前もって感謝します!

4

3 に答える 3

1

Android は最初のフォーカス可能なビューを上からフォーカスするので、他のフォーカス可能なものを設定してみることができます :)

于 2013-10-14T08:40:49.273 に答える
0

Android のフォーカスは多少ランダムで、実際には制御できません。テキストビューを無効にして、ダイアログがなくなったら再度有効にすることもできますが、それはお勧めしません。

正直なところ、Android に任せるだけです。私たちは、非常に大きなアプリでフォーカス ロジックに反対しようとしましたが、何度も試行錯誤を繰り返した結果、手間をかける価値がないと顧客に確信させました。

于 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 の上に TextView を追加すると (Jeppe Andersen が述べたように)、この問題は解決しましたfocusable=truefocusableInTouchMode=trueお役に立てれば。

于 2015-06-11T16:01:59.600 に答える