5

Sono novizio per Android e sto lavorando su una demo per la finestra di dialogo di avviso, voglio chiudere la tastiera virtuale quando si fa clic su uno dei pulsanti dell'avviso. L'ho provato programaticaly ma la tastiera rimane aperta, potete pls help me per questo problema, codiceLa tastiera virtuale non si nasconde automaticamente in Android

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

risposta

3

Prova questo:

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

Rosu alin -Awesome, tu sei un grande fratello ... sto avendo qualche problema in più. puoi aiutarmi? –

+0

alzali sullo stackoverflow, lascialo in un commento qui? Mi darò un'occhiata –

+0

ok, fratello. Ti sto dicendo, ma non posso postare domanda dice che puoi postare ogni 90 minuti .. :( –

1

provare a farlo nel modo seguente

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

Utilizzare attenzione l' attuale tuoi alertDailog no t la vostra attività

+0

mi dà non può risolvere eroor a due linee :( –

+0

@ SulphuricAcid ho aggiornato la mia risposta. può provare ora? –

1

In realtà ci deve essere ritardo in modo da utilizzare questo codice

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

Ciao, grazie ashish, devo chiamarlo? ma dove.può aiutarmi un po 'più fratello .. :) –

+0

quando si nasconde la finestra di dialogo da dialog.dismiss –

+0

sul suo clic del pulsante. ci sono due pulsanti "crea" e "cancle". su entrambi i pulsanti lo sto smontando. –

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

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

    } 
} 
dialog.dismiss(); 
Problemi correlati