5

私はアンドロイドに初心者ですし、警告ダイアログボックスのデモ作業中です。アラートのボタンの1つがクリックされるとソフトキーボードを閉じたいと思います。試しましたあなたはplsはこの問題のために私を助けることができるprogramaticalyが、キーボード、開いたまま、 コードソフトキーボードはアンドロイドでプログラムで非表示になりません

public void Show_Dialog() { 
     final AlertDialog.Builder alertDialog = new AlertDialog.Builder(
       SwipeActivity.this); 
     LayoutInflater inflater = this.getLayoutInflater(); 
     final View layout = inflater.inflate(R.layout.add_albom_dialog, null); 
     alertDialog.setView(layout); 

     final InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     //android:digits="abcdefghijklmnopqrstuvwxyz1234567890 " 

     alertDialog.setPositiveButton("Create", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         EditText txts = (EditText) layout 
           .findViewById(R.id.addAblum_edit); 
         hideSoftKeyboardDialogDismiss(SwipeActivity.this); 
         if(txts.getText().toString().trim().length() > 0) { 
          Add_album(txts.getText().toString()); 

         } else { 

          AlertDialog alertDialog = new AlertDialog.Builder(SwipeActivity.this).create(); 
          alertDialog.setTitle("Error"); 
          alertDialog.setMessage("Name can't be emtpy"); 
          alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", 
            new DialogInterface.OnClickListener() { 
             public void onClick(DialogInterface dialog, int which) { 
              dialog.dismiss(); 
              inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
              inputManager.hideSoftInputFromInputMethod(getCurrentFocus().getWindowToken(), 0); 

             } 
            }); 
          alertDialog.show(); 

         } 
         dialog.cancel(); // Your custom code 
        } 
       }); 

     /* When negative (No/cancel) button is clicked */ 
     alertDialog.setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         hideSoftKeyboardDialogDismiss(SwipeActivity.this); 
         dialog.cancel(); 
         // finish(); 

        } 

       }); 
     alertDialog.show(); 
    } 

答えて

3

これは試してみてください:

protected void hideSoftKeyboard(EditText mSearchView) { 
    InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    mgr.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0); 
} 
+0

Rosu alin - 素晴らしいです、あなたは偉大な兄弟です...もっと問題があります。 –

+0

stackoverflowでそれらを上げて、ここにコメントに入れておきますか?私は見てみましょう –

+0

ok.y、brother.iはあなたに話していますが、投稿の質問はそれがあなたに90分ごとに投稿できると言っています.. :( –

1

は次のよう

final InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 

final AlertDialog alertDialog = new AlertDialog.Builder(SwipeActivity.this).create(); 
        alertDialog.setTitle("Error"); 
        alertDialog.setMessage("Name can't be emtpy"); 
        alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 

           inputManager.hideSoftInputFromInputMethod(alertDialog.getCurrentFocus().getWindowToken(), 0); 
           dialog.dismiss(); 

          } 
        }); 
       alertDialog.show(); 

があなたのalertDailogの現在のフォーカスなしを使用してそれをやって試してみてくださいあなたの活動をt

+0

それは私が二行:( –

+0

でeroorを解決することはできません提供します@ sulphuricAcid私は私の答えを更新しました。今すぐ試すことができますか? –

1

実はので、このコードを使用して遅延がなければならない

public static void hideSoftKeyboardDialogDismiss(final Activity activity) { 
    new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      activity.runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
       InputMethodManager inputMethodManager = (InputMethodManager) activity 
        .getSystemService(Activity.INPUT_METHOD_SERVICE); 
       if (null != activity.getCurrentFocus()) { 
        inputMethodManager.hideSoftInputFromWindow(activity 
        .getCurrentFocus().getWindowToken(), 0); 
        } 
       } 
      }); 
     } 
    }, 1); 
} 
+0

こんにちは、おかげで、私はそれを呼び出す必要がありますか?しかし、あなたは私より少し兄弟を助けることができます.. :) –

+0

dialog.dismissによってダイアログを隠しているときは、そのボタンclicks.thereに –

+0

の2つのボタン "作成"と "cancle"があります。両方のボタンで私はそれを解体しています。 –

2
dialog.setOnDissmissListener(){ 
    void onDismiss(){ 

    inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
    inputManager.hideSoftInputFromInputMethod(getCurrentFocus().getWindowToken(), 0); 

    } 
} 
dialog.dismiss(); 
関連する問題