2012-10-08 10 views
9

Otwieram Dialog z poziomu Activity. Gdy okno dialogowe, wzywamUkrywanie miękkiej klawiatury wejściowej po zamknięciu okna dialogowego

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

Problemem jest to, kiedy zamknąć okno albo przez naciśnięcie przycisku anulowania lub klikając na zewnątrz okna, przełączników klawiszowych do klawiatury tekst i nie odejdzie I util kliknij przycisk powrotu sprzętu. Jak mogę zamknąć klawiaturę, gdy okno dialogowe zostanie odrzucone, a ostrość zostanie zwrócona do poprzedniego okna?

+0

jakieś rozwiązanie w tej sprawie? – tactoth

Odpowiedz

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(); 
+0

Patrząc na twój kod, to zamknie klawiaturę tylko wtedy, gdy kliknę przycisk. Chciałbym zamknąć to z więcej niż jednego powodu: klikając przycisk, klikając na zewnątrz lub okno dialogowe kończące jego zadanie. Lepiej jest po prostu wykryć, kiedy okno dialogowe zostanie odrzucone, a nie białe - wymieniając wszystkie możliwe sposoby, w jakie okno może zostać odrzucone. – gatzkerob

1

Sądzę, że ta metoda aktywności może być dla Ciebie przydatna.

@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 
     } 
    } 
0

W moim przypadku rozwiązaniem było umieszczenie ukryj klawiatury w dialogu oddalenie

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); 
     } 
    } 
}); 
0

z działalności onCreateView() metodę można to zrobić:

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

albo w Oczywisty xml

android:windowSoftInputMode="stateAlwaysHidden" 

To automatycznie ukryć klawiaturę na oddalenie od Dialog

4

w AndroidManifest.xml, ustawić tę właściwość w Aktywny które pokazują Dialog

androida: windowSoftInputMode = "stateAlwaysHidden"

Uwaga! nie StanHiddent, jest stateAlwaysHidden. Automatycznie ukryje miękką klawiaturę przy zamykaniu okna dialogowego.

Mam nadzieję, że uratujesz swoje życie.

+0

Dzięki @ Weiliang Chik, uratowałeś mój czas –

+0

@ParmarSubhash, nie twoje życie? – Faser

Powiązane problemy