web-gelistirme-sc.com

İletişim kutusu kapatıldıktan sonra yazılım klavyesini gizle

AlertDialog'un görevinden alınmasından sonra yumuşak klavyeyi gizlemek istiyorum, ancak yine de görünüyor. İşte kodum:

alert = new AlertDialog.Builder(MyActivity.this);
imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

alert.setOnDismissListener(new DialogInterface.OnDismissListener() {

    @Override
    public void onDismiss(DialogInterface dialog) {
        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
    }
});
36
Dmytro Zarezenko

İçinde Manifest xml  

Android:windowSoftInputMode="stateAlwaysHidden"

Otomatik olarak, Dialog dismiss'inde yumuşak klavyeyi gizler

76
Rajeshwar

Ben de aynı problemle karşılaştım. Böyle yaparak çözüldü. Herhangi bir referansa ihtiyacı yok:

imm.hideSoftInputFromWindow(getWindow().getDecorView()
                .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
15
NordicShaw

Bir uyarı iletişim kutusunu kapatırken de benzer bir sorunla karşılaştım. Bu benim için hile yapmak gibi görünüyor.

DialogFragment'inizin içinde

public static void closeKB(final View view) 
{
    caller.postDelayed(new Runnable() {
        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }, 1);
}

@Override
public void onDismiss(DialogInterface dialog)
{
    super.onDismiss(dialog);
            View view = getActivity().getCurrentFocus();
    if (view != null)
    {
        closeKB(view);
    }
}
6
Miika Pakarinen

Bu yöntemi kullanıyorum:

IBinder token = searchTextEntry.getWindowToken();
( ( InputMethodManager ) getSystemService( Context.INPUT_METHOD_SERVICE ) ).hideSoftInputFromWindow( token, 0 );

searchTextEntry, EditText başvurumun adıdır.

5
ScouseChris

Tüm bu çözümlerle ilgili sorun yaşadım, ancak bu parçadaki her bir @ amal-dev-s-i parçasıyla bir Fragment ile çalışıyorsanız: iletişim kutusundaki klavyeyi nasıl gizleyebilirim

Bunu parçama ekledim ve iletişim kutusundaki dismiss () işlevini çağırdıktan sonra çalıştı:

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

Ve bir aktivite içinde ise, üst aktivitenin onResume () öğesine yukarıdaki (ekleme getActivity () yi) ekleyerek benzer şansım oldu.

1
policenauts
protected void hideKeyboard() {
    final Activity activity = getActivity();
    final View view = activity != null ? activity.getCurrentFocus() : null;
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            if (view != null) {
                InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null)
                    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            }
        }
    }, 1);
}

@Override
public void onDismiss(DialogInterface dialog) {
    super.onDismiss(dialog);
    hideKeyboard();
}
1
Yusuf Yaşar

Bu çalışıyor! Bu, iletişim kutusu kapatıldıktan sonra klavyeyi kapatacak

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
0
Karthik Sankar

InputMethodManager işlevini kullanmak için tüm bu öneriler biraz belirsizdir;
ve en azından benim için çalışmıyorlar.
Evet, klavye kayboluyor ancak uygulama çöküyor !?
Başlıca sorun, klavyenin gizlenmesinin diyalog kaybolduğunda aynı anda gerçekleşmesidir.

Bunu önlemek için dialog.dismiss(), view.postDelayed()'den sonra imm.hideSoftInputFromWindow() içinde çağrılmalıdır ve benim durumumda gecikmeyi 150 olarak ayarlıyorum.

0
user3130847