频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
findViewById报错
2012-04-13 14:08:45           
收藏   我要投稿
通過ID找到Layout的 VIEW控件。,比如你的控件Button ID為"@+id/button01"   就可以通過這樣Button btn=(Button)findViewById(R.id.button01")找到控件。。這時這個btn就是代表這個按鈕。。你可以理解成JS的getElementById()。
    Android中FindViewById()是一个非常常用的函数,位于android.app.Activity包中。该函数利用我们在XML文件中定义的View的id属性来获取相应的View对象。findViewById()属于API Level 1, 对应的android版本是android1.0,由此,可以看出,该函数是android早期版本中就有的。顺便说一下, android目前市场上已商用的版本及其对应的API Level如下:
   android 1.0             API Level 1
   android 1.1             API Level 2
   android 1.5             API Level 3
   android 1.6             API Level 4
   android 2.0             API Level 5
   android 2.0.1          API Level 6
   android 2.1             API Level 7
   android 2.2             API Level 8
1、参数错误:findViewById的参数是一个View的ID,如果在XML文件中没定义相应的ID,则程序会
             善意的告诉你:XXX cannot be resulved。此时,补充定义就可以了。
2、未指定调用布局:findViewById()的调用与具体的布局有关,默认的是main.xml中的布局,函数前
                 没有布局指示。不过,当我们在main.xml描述的布局中,添加其它布局时,利用该函数获
                 取所添加布局中的View,则需在调用时,添加布局名,形式如下:
                 addLayout.findViewById(),如果不这么做,程序编译时有时不会报错,但运行时会
                 提示遇到异常,并强制关闭应用。
3、命名冲突:这个错误可能不是很常见,不过,要是没有遇到过,猛的来这么一下,还真让人 有点懵。
                 呵呵,本人就犯过这样的错误。解释下,这里的命名冲突是指当前工程中定义的类与
                 android在Framework中提供的名字相同,这样的话,当前工程文件中,会优先使用本工
                 程中的定义。当然,使用findViewById()函数时,发生这种错误必须满足以下几个条件:
                 一是:需要在当前工程中利用ID(xml中定义)来查找对应的View对象;
                 二是:查找的View类名恰好与本工程中已有的类定义相同
                 三是:同名的两个类实例化后产生的对象类型不同,如:一个是View,一个是Activity。

摘自 小南的博客
点击复制链接 与好友分享!回本站首页
相关TAG标签
上一篇:ScrollView嵌套GridView、ListView的解决办法
下一篇:你不可以不知道的findViewById
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站