以我这个菜鸟的经验来看,运行时发生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中的标志符给搞混了,估计是有其他原因,有大神知道的话请指点一下。
文笔不好,希望能给看官你带来一丢丢帮助吧。