5

Jestem nowicjuszem dla Androida i pracuję nad wersją demonstracyjną okna dialogowego alertu, chcę zamknąć miękką klawiaturę po kliknięciu jednego z przycisków alertu. Próbowałem go programaticaly ale klawiatura pozostaje otwarty, można pls mi pomóc w rozwiązaniu tego problemu, kodKlawiatura programowa nie ukrywa się programowo w Androidzie

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

Odpowiedz

3

Spróbuj tego:

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

Rosu alin - Wspaniale, jesteś wspaniałym bratem ... Mam więcej problemów. Czy możesz w tym pomóc? –

+0

podnieś je na stackoverflow, zostaw je w komentarzu tutaj? Popatrzę –

+0

ok, brat.i mówię ci, ale nie mogę wysłać pytanie, że możesz pisać co 90 minut .. :( –

1

spróbować zrobić to w następujący sposób

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

zużywają prąd skupić swoją alertDailog ma żadnego t swoją aktywność

+0

daje mi nie może rozwiązać istnieje Podany w dwóch liniach :( –

+0

@ sulphuricAcid I zaktualizowałem moją odpowiedź. Czy możesz teraz spróbować? –

1

Właściwie nie musi być opóźnieniem więc użyć tego kodu

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

Cześć, dziękuję, poproszę, muszę to nazwać? ale gdzie mogę pomóc mi jeszcze bardziej bratu .. :) –

+0

kiedy ukrywasz okno dialogowe przez dialog.dismiss –

+0

na kliknięciach przycisku. Są dwa przyciski "Utwórz" i "Kantyk". na obu przyciskach go odrzucam. –

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

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

    } 
} 
dialog.dismiss();