问题描述
在上一个项目中,我使用构造函数通过xml初始化来创建SurfaceView类 公共MySurface(上下文上下文,AttributeSet属性),以下是一些代码:
class MySurface extends SurfaceView{
static Handler yes;
MySurface(Context context,AttributeSet attrs) {
//this makes sure is loaded when the main layout is inflated
...
yes = MainActivity.yes; //another handler inside the MainActivity
//everything works fine with this set-up in my prevIoUs project!
}
现在在我的新项目中,我遵循相同的设置,但是类MySurface属于按需模块 当它像上面一样初始化时,Logcat读取MainActivity.yes为null
之所以这样做,是因为在先前的项目中,整个主要活动布局都已加载,并且处理程序yes已经初始化。
但是,在该项目中,一旦用户下载了按需功能(包括加载MySurface的布局),则处理程序是似乎为空。
因此,布局传递正发生在初始化Handler之前。 我需要反过来。
我重写onWindowFocusChange(),该函数对按需功能的整个mainactivity布局进行requestLayout。但 当再次进行布局传递时,Logcat仍然说Handler是null。
我认为,一旦onWindowFocusChange()被系统调用,所有字段都将初始化。我不知道为什么在调用requestLayout()(INSIDE ONWINDOWFOCUSCHANGE)并读取Logcat之后,它仍然显示Handler yes仍然为空
我所知道的可行方法是,是否获得对基本App模块的MainActivity中的按需功能模块mainactivity类的引用。但是按需功能模块的包名称与基本App模块的包名称不同。 如何获取对按需功能模块mainactivity类的引用,以便在仍位于基本App模块内部时可以在此类中调用方法?
关于在初始化处理程序“是”后如何初始化MySurface类的任何建议。
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)