今天调试一段程序发现一个隐蔽的小问题,找了好久才找到问题。
我用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.{布局文件}就是你想要得到的控件所在的布局。然后利用这个布局来寻找