首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

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

2012-09-20 
一个看似简单的问题。findViewById 返回 nullJava codeint titleId RUtils.getResId(com.android.intern

一个看似简单的问题。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里的东西你怎么能随便拿????

就这个问题,以前也遇到过

热点排行