1

私は Android SDK (Java ではない) を初めて使用し、オプション メニューについて 1 つまたは 2 つの質問がありました。developer.android を含むいくつかのチュートリアルを探します。私の問題は、ファイルの命名です。res/menu フォルダで、メニュー xml ドキュメントのタイトルが menu.xml の場合、メニューは正常に機能します。mainMenu.xml で呼び出そうとすると、mainMenu を解決できないか、フィールド エラーではありません。これが私の主な活動のコードです。

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.mainMenu, menu);
    return true;
}

上記のコードの R.menu.mainMenu の "mainMenu" は赤で下線が引かれています (エラー) だから私の質問は、メニュー ファイルに好きな名前を付けてもいいですか? この方法では、プロジェクトごとに1つのオプションメニューに制限されているようですが、これは正しくありません(何かが欠けていない限り:)

4

2 に答える 2

0

あなたは間違いなく複数のオプションメニューを持つことができます:しかし小文字の制限があるかもしれません。アンダースコアを使用すると、すべて設定する必要がありますか?

編集:うん、このエラーメッセージはあなたがビルドしようとすると発生します:

[2011-05-20 12:09:40 - BlAH BLAH BLAH] res\menu\newMenu.xml: Invalid file name: must contain only [a-z0-9_.]

したがって、小文字の制限があります。それを知らなかった。

于 2011-05-20T16:03:05.160 に答える
-1

問題は、XML ファイルに選択した名前です。という名前のファイルの出力例を次に示しますsomeName

res/menu/someName.xml: 無効なファイルです

名前: [a-z0-9_.] のみを含める必要があります。

ご覧のとおり、ファイルには小文字、数字、アンダースコア、またはピリオドを含めることができます。ファイルに名前を付けたためmainMenu、大文字Mが問題を引き起こしています。

一般に、キャメルケースは Android リソースには適さないため、スネークケースを使用する必要があります。

また、あなたの -method に関するちょっとしたメモonCreateOptionsMenu: アクティビティのコンテキストは既にメニュー インフレータを提供しています。作成する必要はありません:

@Override
public boolean onCreateOptionsMenu(Menu menu){
  this.getMenuInflater().inflate(R.menu.main_menu, menu);
  return super.onCreateOptionsMenu(menu);
}
于 2011-05-20T16:05:11.473 に答える