1

我为片段中存在的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"

请帮忙。

4

1 回答 1

1

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

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

于 2013-08-15T20:23:57.540 回答