View.findViewById()返回null

时间:2012-11-16 11:19:49

标签: android nullpointerexception findviewbyid

我有这段代码:

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包含一个id等于R.id.listViewMenu + 1的MenuView。当然这会在menu.setColors上抛出一个NPE。

为什么R.id.listViewMenu包含的ID不会导致XML中带有该ID的视图?

我试图清理我的项目,但它仍然保持不变。

编辑:发布请求的文件。

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:清理项目。如果它不起作用,请再次清理项目。如果它不起作用,请清除所有项目。直到它工作。如果它不起作用,那就问。

1 个答案:

答案 0 :(得分:13)

试试这个:

(在eclipse菜单栏中)项目&gt;清洁

说明:有时在构建过程中,R.java类会混淆并导致对id的错误引用。有时当我编译时,图像会突然改变,因为与之关联的id也会改变。任何资源,布局,ID等都可能发生这种情况。

重新生成R.java类并修复不规则性的方法是清理项目。

希望有所帮助!