当前位置: 代码迷 >> Android >> 一个看似简单的有关问题。findViewById 返回 null
  详细解决方案

一个看似简单的有关问题。findViewById 返回 null

热度:494   发布时间:2016-05-01 14:46:32.0
一个看似简单的问题。findViewById 返回 null
Java code
    int titleId = RUtils.getResId("com.android.internal.R", "id", "title_container");    View titleView = thiz.getWindow().findViewById(titleId);


RUtils 是我写的一个工具类, 在此不给出了。

cebug的时候可以获取 titleId  
但是titleView 确实空,
该代码在onCreate执行。 

请问这是为啥呢?

------解决方案--------------------
mark

看了下ViewGroup 遍历时 flag应该没问题,所以怀疑在decor时没有添加到DecorView
有空跟踪下再看看

不过即使拿到这个title_container 解决了填充不满的问题,
自定义title还会有“载入activity时 屏幕先黑一下”的问题

建议还是把自定义title放到main.xml中


------解决方案--------------------
估计你是反射得到的titleId,你可以在不同手机上log输出下这个titleId
这个应该是一个固定值,是你编译的那个系统的值,但是不同手机的这个系统值 是不同的,所以你得不到

解决办法:
FrameLayout decorView = (FrameLayout) getWindow().getDecorView();
LinearLayout child = (LinearLayout) decorView.getChildAt(0);
FrameLayout titleView = child.getChildAt(0);
------解决方案--------------------
探讨

引用:

setContentView 之后用。。。 不先获取xml, xml里的东西你怎么能随便拿????

就这个问题,以前也遇到过
  相关解决方案