我有以下代码:
private void inflateMenu() {
if (menu == null) {
mFanView = (LinearLayout) findViewById(R.id.fanView);
final View v = LayoutInflater.from(getContext()).inflate(
R.layout.sidemenu, mFanView);
menu = (MenuView) v.findViewById(R.id.listViewMenu);
}
menu.setColors(backgroundColor, selectedColor, unselectedColor);
}
调试时,v包含一个MenuView,其ID等于
R.id.listViewMenu + 1
。当然,这会在menu.setColors上抛出一个NPE。为什么R.id.listViewMenu包含的ID不会导致XML中具有该ID的 View ?
我试图清理我的项目,但仍然保持不变。
编辑:发布请求的文件。
sidemenu.xml
<com.ui.library.slidingmenu.MenuView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listViewMenu"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
编辑:问题解决了。
对于任何因为findViewById返回null的人而来:清理项目。如果不起作用,请再次清理项目。如果不起作用,请清除所有项目。直到它起作用。如果不起作用,请询问。
最佳答案
试试这个:
(在Eclipse菜单栏中)“项目”>“清理”
说明:有时在构建过程中,R.java类困惑并且导致对id的错误引用。有时,当我编译时,图像会突然更改,因为与此相关的ID也已更改。任何资源,布局,ID等都可能发生这种情况。
一种重新生成R.java类并修复不规则性的方法是清理项目。
希望对您有所帮助!
关于android - View.findViewById()返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13415556/