视图的 getWindowToken() 在 windowManager.addView() 之后为 null

View's getWindowToken() is null after windowManager.addView()

我已经使用 WindowManager 添加了视图,如下所示:

windowManager.addView(view, view.getViewParams());

在这一行之前和之后,我检查了 view.getWindowToken(),它总是 null

你能解释一下为什么 view.getWindowToken()null 以及什么时候它不是 null 吗?

当您执行 windowManager.addView(...) 时,视图 不会 立即附加到 window。相反,您正在 post 执行一个将在一段时间后发生的操作。

为了等到上面提到的 "some time" 通过,您可以 post 对视图执行操作:


    view.post(new Runnable() { 
        public void run() { 
            // now view is attached to window
            view.getWindowToken(); 
        } 
    });