10

Dialog内から を開いていますActivity。ダイアログが開いたら、私は呼び出します

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

問題は、キャンセル ボタンを押すかダイアログの外側をクリックしてダイアログを閉じると、キーボードがテキスト キーボードに切り替わり、ハードウェアの [戻る] ボタンをクリックしても消えないことです。ダイアログが閉じられ、フォーカスが前のウィンドウに戻ったときにキーボードを閉じるにはどうすればよいですか?

4

5 に答える 5

1

この活動方法はあなたに役立つと思います。

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        // TODO Auto-generated method stub
        super.onWindowFocusChanged(hasFocus);
        if(hasFocus)
        {
            Toast.makeText(MainActivity.this, "has focus", Toast.LENGTH_LONG).show();
                        // write code to remove keyboard
        }
    }
于 2012-10-08T05:25:38.123 に答える
1
AlertDialog.Builder builder = new AlertDialog.Builder(EllipticalActivity.this);
builder.setTitle("title")
       .setMessage("message")
       .setCancelable(false)
       .setNegativeButton("Close", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
               InputMethodManager inputManager = 
                   (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
               inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
                                                    InputMethodManager.HIDE_NOT_ALWAYS);
               dialog.cancel();
           }
        });
        AlertDialog alert = builder.create();
        alert.show();
于 2012-10-08T04:23:39.763 に答える
0

私の場合、解決策は、キーボードを非表示にしてダイアログを閉じることでした

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
    @Override
    public void onDismiss(DialogInterface dialog) {
        View view = activity.getCurrentFocus();
        if (view != null) {
            InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }
}); 
于 2015-09-18T09:51:33.003 に答える
0

Activity onCreateView() メソッドから、これを行うことができます:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)

またはマニフェストxmlで

android:windowSoftInputMode="stateAlwaysHidden"

ダイアログを閉じると、ソフトキーボードが自動的に非表示になります

于 2016-04-05T11:22:04.053 に答える