【问题标题】:WindowManager null窗口管理器空
【发布时间】:2013-08-15 20:08:57
【问题描述】:

我为片段中存在的 gridview 编写了单独的适配器类。如果第一次从适配器构造函数调用窗口管理器它工作但如果我改变方向窗口管理器变为空。

我编写了获取窗口管理器的代码

public CalendarAdapter(Context c, Calendar monthCalendar) {
        getWindowDimension();
    }
void getWindowDimension() {

        Display display = (((Activity)mContext).getWindowManager().getDefaultDisplay());
        windowHeight = display.getHeight();
        windowWidth = display.getWidth();

    }

甚至尝试过getSystemService(WINDOW_SERVICE)

我认为问题是因为活动娱乐。如果没有创建它,它就不会获得活动的窗口。 为窗口管理器抛出 Nullpointer 异常。

在清单活动中有这个标志:

android:configChanges="orientation|screenLayout|navigation|layoutDirection"

请帮忙。

【问题讨论】:

    标签: android android-adapter android-windowmanager


    【解决方案1】:

    我的猜测是,当您在旋转 mContext 尚未附加到窗口后调用 mContext.getwindowManager() 时,请参阅 Activity.onAttachedToWindow。如果您从片段内部调用它,则需要确保在 onFragmentAttached 之前不会调用它。

    简而言之,您可能希望在片段生命周期的后期设置适配器。

    【讨论】:

    • 谢谢詹姆斯。我试图在附加的窗口上编码。正如我记录所有生命周期 onAttached() -> onCreateView() -> onViewCreated() 是序列。我第一次尝试在 viewCreated() 中创建适配器加载良好,但是当我在适配器构造函数中更改方向时,相同的问题空指针指向 winowManager。如果未附加窗口,则不会转到 onAttach()
    猜你喜欢
    • 2011-01-20
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多