5

Ich bin Neuling auf Android und Arbeiten an einer Demo für Alarmdialogfeld, möchte ich die Soft-Tastatur schließen, sobald eine der Schaltflächen aus der Warnung angeklickt wird. Ich habe es versucht programaticaly aber Tastatur bleibt offen, können Sie mir helfen, pls für dieses Problem, CodeSoft-Tastatur wird nicht programmatisch in Android verstecken

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

Antwort

3

Versuchen Sie folgendes:

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

Rosu alin -Awesome, du bist groß Bruder ... ich habe noch einige Fragen.können Sie dabei helfen? –

+0

erhöhen sie auf Stackoverflow, lassen Sie sie in einem Kommentar hier? Ich werde einen Blick werfen –

+0

ok, Bruder.Ich erzähle Ihnen, aber ich kann keine Frage, es sagt, Sie können alle 90 Minuten posten .. :( –

1

Probieren Sie es auf folgende Weise tun

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

Verwenden Sie Ihre alertDailog ‚s aktuellen Fokus nicht t Ihre Aktivität

+0

es gibt mir nicht eroor an zwei Linien auflösen kann :( –

+0

@ sulfuricAcid Ich aktualisierte meine Antwort. kann es jetzt versuchen? –

1

Eigentlich muss es eine Verzögerung sein, um diesen Code verwenden

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

Hallo, Danke, ich muss es nennen? aber wo.kannst du mir helfen kleiner bruder .. :) –

+0

wenn du den dialog von dialog.dismiss –

+0

auf seine taste klickst, gibt es zwei schaltflächen "create" und "cancel". Auf beiden Tasten lösche ich es. –

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

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

    } 
} 
dialog.dismiss();