как получить WindowToken деятельности без представления? - PullRequest
30 голосов
/ 17 октября 2011

Теперь я пытаюсь скрыть экранную клавиатуру, когда пользователь касается клавиатуры:

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

Я хочу поместить логику в свой базовый класс активности, так что если можно получить getWindowToken без View?

Ответы [ 5 ]

36 голосов
/ 23 марта 2014

Я столкнулся с точно такой же проблемой, когда писал OnPageChangeListener в Activity. Вы можете использовать одно из этих решений. Или:

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

или

findViewById(android.R.id.content).getWind‌​owToken()
18 голосов
/ 17 октября 2011

Конечно, вы можете использовать:

getContentView().getWindowToken()

или вы можете обратиться к SO Quest

3 голосов
/ 15 декабря 2017

Просто Используйте getWindow().getDecorView().getWindowToken()

1 голос
/ 26 октября 2016
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 голосов
/ 17 ноября 2017

Вы можете попробовать это на своем теге активности файла манифеста, чтобы скрыть клавиатуру.

 android:windowSoftInputMode="stateHidden"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...