2013-06-13 8 views
1

У меня есть EditBox в моем всплывающем окне AlertDialog. Я сделал это, чтобы всплывать на виртуальной клавиатуре в тот момент, AlertDialog всплывает (так что мне не нужно нажимать на том белом поле, чтобы показать клавиатуру), таким образом:Как заставить виртуальную клавиатуру уйти?

InputMethodManager imm = (InputMethodManager) 
      Asocijacije.this.getSystemService(Context.INPUT_METHOD_SERVICE); 

      if (imm != null){ 
      imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 
      } 

Но когда я закончу ввод текста Мне нужно щелкнуть «Готово» на клавиатуре, а затем ОК в AlertDialog. Проблема в том, что пользователи идут прямо к кнопке OK, как только они набираются, и после нажатия OK виртуальная клавиатура остается на экране. Теперь им нужно нажать кнопку «Назад» на своем устройстве. Как очистить клавиатуру после нажатия кнопки OK?

Вот весь мой код AlertDialog, если это помогает:

case R.id.bKonacno: 

         } 

       LayoutInflater layoutInflaterK = LayoutInflater.from(context); 
       View promptViewK = layoutInflaterK.inflate(R.layout.popup_answer, null); 
       AlertDialog.Builder alertDialogBuilderK = new AlertDialog.Builder(context); 
       // set prompts.xml to be the layout file of the alertdialog builder 
       alertDialogBuilderK.setView(promptViewK); 
       final EditText inputK = (EditText)promptViewK.findViewById(R.id.userInput); 

       InputMethodManager imm = (InputMethodManager) 
       Asocijacije.this.getSystemService(Context.INPUT_METHOD_SERVICE); 

       if (imm != null){ 
       imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 
       } 

       alertDialogBuilderK 
             .setCancelable(false) 
             .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
                public void onClick(DialogInterface dialog, int id) { 
                 // get user input and set it to result 

                 //some code of mine 
                } 
               }) 
             .setNegativeButton("Cancel", 
               new DialogInterface.OnClickListener() { 
                public void onClick(DialogInterface dialog, int id) { 
                 dialog.cancel(); 
                } 
               }); 
           // create an alert dialog 

           AlertDialog alertK = alertDialogBuilderK.create(); 
           alertK.show(); 

           break; 

enter image description here

ответ

1

Вы можете сделать следующее при нажатии Ok/Cancel кнопку.

InputMethodManager imm = (InputMethodManager)getSystemService(
     Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 

Прочитано Close/hide the Android Soft Keyboard для получения дополнительной информации. Надеюсь, поможет.

+1

Нет, это не сработало. Я поместил этот код в свою кнопку ОК, и клавиатура все еще здесь. – marjanbaz

+0

Вы сказали, что нажимаете «Готово» на клавиатуре, затем вы нажимаете «Ok»/'Cancel'. AFAIKiIt должен идеально спрятаться при нажатии на виртуальную клавиатуру «Done» n без упоминания чего-либо. –

+0

Да, когда я нажимаю «Готово», клавиатура ушла. Затем я нажимаю OK, чтобы скрыть AlertDialog. Я разместил ваш код прямо над моей инструкцией ELSE. Это хорошо? – marjanbaz

0

Попробуйте добавить следующее к кнопкам:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 
+0

Нет, не работает. – marjanbaz

Смежные вопросы