2012-10-08 199 views
9

我從Activity中打開Dialog。當對話框打開,我叫對話框關閉時隱藏軟輸入鍵盤

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

的問題是,當我要麼通過點擊取消按鈕或者點擊對話框中,將鍵盤切換到文本的鍵盤之外,不會消失UTIL我關閉對話框點擊硬件後退按鈕。如何解除對話框關閉時的鍵盤,並將焦點返回到前一個窗口?

+0

有關於此的任何解決方案? – tactoth

回答

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

看着你的代碼,這將只會關閉鍵盤,如果我點擊一個按鈕。我希望關閉的原因有多種:單擊按鈕,單擊外部或完成其任務的對話框。只需檢測對話被解散的時間就更有意義,而不是白名單列出窗口可以被解僱的所有可能方式。 – gatzkerob

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

從活動onCreateView()方法,你可以這樣做:

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

或者在清單XML

android:windowSoftInputMode="stateAlwaysHidden" 

It會自動隱藏軟鍵盤上的AndroidManifest.xml中對話框

4

的辭退,你活動,展示了對話框

的Android設置該屬性:windowSoftInputMode = 「stateAlwaysHidden」

注意!不是stateHiddent,是stateAlways隱藏。它會自動隱藏軟鍵盤的對話框關閉。

希望能拯救你的生命。

+0

謝謝@Weiliang Chik,你救了我的時間 –

+0

@ParmarSubhash,不是你的生活? – Faser