android 中“view.getWindowToken”的含义是什么?

Adi*_*tya 4 android

我试图通过单击按钮隐藏键盘。

然后我遇到了这段代码:

public static void hideKeyboardFrom(Context context, View view) {
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是它是什么view.getWindowToken()、它的意义是什么以及它返回什么。

Key*_*öze 6

所以基本上所有图形用户界面都是在Window上呈现的。一个例子是官方文档Activity中的an :

几乎所有活动都与用户交互,因此 Activity 类负责为您创建一个窗口,您可以使用 setContentView(View) 在其中放置 UI

另一个例子是AlertDialog.

Android 中的一个屏幕可能有多个窗口。例如,您可以在多窗口 Android 功能中使用两个 Activity。有时一个窗口可以包含其他窗口。

这是一个关于窗口是什么的问题,其中有一些很好的答案。

为了回答您的问题,每个窗口都有一个唯一的标识符。该标识符称为窗口令牌。所以,“WindowToken”的意义就是唯一标识一个Window。还有另一种方法,即getApplicationWindowToken(),可用于获取最顶层窗口的标识符。