5

我有这个代码:

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

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

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

编辑:发布请求的文件。

边菜单.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:清理项目。如果它不起作用,请再次清理项目。如果它不起作用,请清理所有项目。直到它起作用。如果它不起作用,请询问。

4

1 回答 1

13

试试这个:

(在 Eclipse 菜单栏中)项目 > 清洁

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

重新生成 R.java 类并修复异常的一种方法是清理您的项目。

希望有帮助!

于 2012-11-16T11:22:52.543 回答