Скрыть клавиатуру в AlertDialog

У меня есть предупреждающий диалоговый журнал с редактируемым текстом. Для этого я хочу, чтобы при нажатии кнопки "ОК" или "Отмена" отображалась клавиатура, и я хочу, чтобы при нажатии кнопки "ОК" или "Отмена" клавиатура скрывалась. Странная проблема в том, что когда пользователь выбирает ok, клавиатура скрывается, но когда выбирается отмена, клавиатура не скрывает, что я использую один и тот же код в обоих случаях.

Вот мой код:

final AlertDialog.Builder alert = new AlertDialog.Builder(this);

        alert.setTitle(data);
        final EditText input = new EditText(this);
        InputFilter[] FilterArray = new InputFilter[1];
        FilterArray[0] = new InputFilter.LengthFilter(25);
        input.setFilters(FilterArray);
        input.postDelayed(new Runnable() {
            @Override
            public void run() {
                InputMethodManager keyboard = (InputMethodManager)
                getSystemService(Context.INPUT_METHOD_SERVICE);
                keyboard.showSoftInput(input, 0); 
            }
        },200);



        alert.setView(input);

        alert.setPositiveButton(ok, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                text = input.getText().toString().trim();
                Canvas c = new Canvas(bitmapResult);
                drawTextImage(bitmapResult);
                saveimage();
                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(input.getWindowToken(), 0);
            }
        });

        alert.setNegativeButton(cancel,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        dialog.cancel();
                        saveimage();
                        InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                        im.hideSoftInputFromWindow(input.getWindowToken(), 0);
                    }
                });

        alert.show();

где моя загадка? Кто-нибудь может мне помочь?

11
задан Gabrielle 1 September 2011 в 12:47
поделиться