这是我的代码:

public MyPresentation(Context outerContext, Display display) {
    super(outerContext, display);

    WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
    View rootView = getWindow().getDecorView().getRootView();

    WindowManager.LayoutParams lp = getWindow().getAttributes();
    lp.x=300;
    lp.y=300;
    lp.width=lp.height=500;
    wm.updateViewLayout(rootView, lp);
}


如您所见,我正在尝试通过窗口管理器更改演示文稿的参数。

Java.lang.IllegalArgumentException:View=com.android.internal.policy.impl.PhoneWindow$DecorView{164f32fc V.E..... R.....ID 0,0-0,0} not attached to window manager
    at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:466)
    at android.view.WindowManagerGlobal.updateViewLayout(WindowManagerGlobal.java:322)
    at android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:91)
    at com.evideostb.cbb.diveintotv.MyPresentation$override.init$body(MyPresentation.java:30)
    at com.evideostb.cbb.diveintotv.MyPresentation$override.access$dispatch(MyPresentation.java)
    at com.evideostb.cbb.diveintotv.MyPresentation.<init>(MyPresentation.java:0)


那么,如何获取附加到窗口管理器的演示文稿的根视图?

最佳答案

作为例外名称说IllegalArgumentException, DecorView not attached to window manager
调用getRootView()时,活动/片段可能在onPause状态之后(没有活动的UI)。

您可以在视图上执行任何操作之前添加以下代码:
活动

if (isFinishing()){
//You code here
}


分段

if (isAdded()){
//You code here
}


还可以查看here,也许您遇到了常见错误。

关于android - 如何获取附加到窗口管理器的演示文稿的根 View ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38888557/

10-11 15:01