Android 使用findViewById得到null

今天调试一段程序发现一个隐蔽的小问题,找了好久才找到问题。

我用layout定义了一个button. 但是在程序中无法用findViewById获得到它的引用(得到的是null)。

layout.xml定义如下

<Button id="@+pageBar/next_bt"
android:layout_width="80px"
android:layout_height="40px"
android:text="下页"/>

nextBt = (Button)findViewById(R.pageBar.next_bt);

得到的结果nextBt为null;

百思不解,最后仔细查看,与其它代码对比,终于发现一个小问题,就是id的问题。不应该使用id="@+pageBar/next_bt"(据说是android的原来的风格)

现在的风格是android:id="@+pageBar/next_bt"

修改后就可以了。

以下我在网上找了其它原因:

1、在setContentView之前调用findViewById

2、layout文件夹,layout-land和layout-port文件夹没有分清,导致修改的layout文件没有起效果

3、想要得到的xml布局中的View不在当前活动中,要使用View layout=inflater.inflate(R.layout.{布局文件}, null)得到控件所在的布局View,R.layout.{布局文件}就是你想要得到的控件所在的布局。然后利用这个布局来寻找

转载请标明出处:3G Study :http://blog.3gstdy.com/archives/43

发表评论