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 に、XML でその ID を持つビューにつながらない 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 を返すためにここに来る人へ: プロジェクトをクリーンアップします。うまくいかない場合は、プロジェクトをもう一度クリーンアップします。うまくいかない場合は、すべてのプロジェクトをクリーンアップしてください。それが機能するまで。うまくいかない場合は、質問してください。

4

1 に答える 1

13

これを試して:

(Eclipse メニューバーで) Project > Clean

説明: ビルド中に R.java クラスが混乱し、id への間違った参照が発生することがあります。コンパイルすると、関連付けられている id も変更されるため、画像が突然変更されることがあります。これは、任意のリソース、レイアウト、ID などで発生する可能性があります。

R.java クラスを再生成して不規則性を修正する方法は、プロジェクトをクリーンアップすることです。

それが役立つことを願っています!

于 2012-11-16T11:22:52.543 に答える