findViewById==null? 小心android编译器的命名陷阱

来源:互联网 发布:mac口红一盒 编辑:程序博客网 时间:2024/05/20 00:52

以我这个菜鸟的经验来看,运行时发生findViewById == null错误,一般都是因为没在程序中调用setContentView或者调用的位置不对。今天遇到个特别的,写出来分享一下吧。

用的是android studio,在之前我的工程都只有一个module A,但这次我添加了一个module B,从A中通过StartActivity(intent(B))的方式打开B中的Activity,然后问题就来了:findViewById返回null。

B中的代码我是没改动过的,所以我百思不得其解,为什么会出现这样的问题呢?找啊找,个中曲折我就不废话了,最后发现,原来是因为:A和B中的布局文件有一个重名了--activity_main.xml。具体是,B中的activity_main被映射为A的activity_main,两个布局文件里的内容几乎没有同样的,当然在B中findViewById在大部分情况下都会返回null了。

虽然我很菜,但命名空间的概念也是早已烂熟于心,所以我不认为是因为Android studio的开发人员的疏忽能把两个module中的标志符给搞混了,估计是有其他原因,有大神知道的话请指点一下。

文笔不好,希望能给看官你带来一丢丢帮助吧。

1 0
原创粉丝点击