2011-10-17 23 views
24

Teraz staram się ukryć softkeyboard gdy dotykowego użytkownik poza klawiaturą:jak zdobyć okno akcji bez widoku?

((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) 
.hideSoftInputFromWindow(editView.getWindowToken(), 
InputMethodManager.HIDE_NOT_ALWAYS); 

chcę umieścić logiki w moim klasy podstawowej działalności, więc jeśli jest to możliwe bez getWindowToken View?

+1

Czy to literówki "getgetWindowToken()"? – MKJParekh

+1

możliwy duplikat [jak ukryć miękką klawiaturę na Androidzie po kliknięciu poza EditText?] (Http://stackoverflow.com/questions/4165414/how-to-hide-soft-keyboard-on-android-after-clicking-outside -edittext) – Reno

+1

'InputMethodManager InputManager = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE)' 'inputManager.hideSoftInputFromWindow (findViewById (android.R.id.content) .getWindowToken() InputMethodManager.HIDE_NOT_ALWAYS);' –

Odpowiedz

15

Na pewno można użyć:

getContentView().getWindowToken() 

czy można odwołać się do SO Quest

+9

rozwiązany zgodnie Propozycja Hanry'ego: findViewById (android.R.id.content) .getWindowToken() –

+1

To nie działa. – technophyle

+6

Nie ma metody getContentView(). Zamiast tego użyj findViewById (android.R.id.content) .getWindowToken(). – mhsmith

25

wychodził dokładnie ten sam problem, pisząc OnPageChangeListener w ramach działania. Możesz skorzystać z jednego z tych rozwiązań. Albo:

getWindow().getDecorView().getRootView().getWindowToken() 

czyli

findViewById(android.R.id.content).getWind‌​owToken() 
0
public static final String M_TOKEN = "mToken"; 

@Nullable 
protected IBinder getToken(Activity activity) { 
    try { 
     Field mTokenField = Activity.class.getDeclaredField(M_TOKEN); 
     mTokenField.setAccessible(true); 
     IBinder mToken = (IBinder) mTokenField.get(activity); 
     return mToken; 
    } catch (NoSuchFieldException e) { 
     // handle 
    } catch (IllegalAccessException e) { 
     // handle 
    } 
    return null; 
} 
0

Możesz spróbować tego na oczywistym tagu aktywności plik, aby ukryć klawiaturę.

android:windowSoftInputMode="stateHidden" 
1

Wystarczy użyć getWindow().getDecorView().getWindowToken()

Powiązane problemy