Ответ 1
Конечно, вы можете использовать:
getContentView().getWindowToken()
или вы можете обратиться к SO Quest
Теперь я пытаюсь скрыть экранную клавиатуру, когда пользователь прикасается к клавиатуре:
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(editView.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
Я хочу поместить логику в свой базовый класс активности, так что если можно получить WindowToken без просмотра?
Конечно, вы можете использовать:
getContentView().getWindowToken()
или вы можете обратиться к SO Quest
Я столкнулся с такой же проблемой при написании OnPageChangeListener
внутри Activity. Вы можете использовать одно из этих решений. Или:
getWindow().getDecorView().getRootView().getWindowToken()
или
findViewById(android.R.id.content).getWindowToken()
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;
}
Вы можете попробовать это в своем ярлыке активности файла манифеста, чтобы скрыть клавиатуру.
android:windowSoftInputMode="stateHidden"
Просто используйте getWindow().getDecorView().getWindowToken()