在这周的某一天需要上线公司产品,由于环节过多,测试人手不够,移动端作为最后一环,来到了凌晨,凌晨测试时后台数据异常导致了APP崩溃,同时市场部说在上线后几天也不一定有数据,临时再增加了容错处理以及对应状态。作为 Android 组内一员,大家都需要追加对应模块的状态,我也不例外,而且这个需求也很简单,布局也不用写,大家都是用同一个状态布局。但事故发生了:
状态切换原理无非就是 view 的 visible 与 gone,另外两个同事的状态切换没问题,我的状态切换不生效,由于是凌晨,大家急着下班,大家一起看了很久没找到原因(从代码逻辑到 view 测量等等一系列环节分析无果),另一个同事便用他的方式写了一套提交了,事后我再看,其逻辑本质并无不同。
我知道这一定是一个非常简单的问题导致的困境。果不其然,第二天来到公司,继续和同事们看,最终找到了原因:
整个界面的布局大概是这样的:
<Layout> <Module1/> <Module2/> <Module3/> //my code </Layout>
每个 module 都是一个 view 并且做了生命周期监听回调,所以他们都是在他们自己代码里做状态处理,而我是在最顶层的 view 中做状态处理,大家都是 使用 <include layout="status.xml">
形式,我也一样。
就是因为我也一样,所以 view ID 与他们相同,而即便顶层 view 看不到他们 layout 相关的内容,但他们的 status 布局依旧是在顶层 view 中,导致我每次获取到的 view 都是他们的状态布局,从而无法真正操作到自己的状态布局,最后换了一个 view ID 就正常了,而那个同事,阴差阳错的 也就是换了一个 ID。。。
自己把自己坑了,复制别人布局代码,最需要注意的就是 ID ID ID !!!,教训。
本站由以下主机服务商提供服务支持:
0条评论