6

アンドロイドアプリケーションでオプションメニューを実装するにはどうすればよいですか? Android Developerからコードを試しましたが、エラーが発生します。これらのような:要素メニューはを宣言する必要があります。ここに私のコードはAndroid Studioでオプションメニューを実装する

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/new_game" 
    android:icon="@drawable/ic_new_game" 
    android:title="@string/new_game" 
    android:showAsAction="ifRoom"/> 
<item android:id="@+id/help" 
    android:icon="@drawable/ic_help" 
    android:title="@string/help" /> 
</menu> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.lucavanraalte.test" > 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme" > 

    <activity android:name=".MainActivity" android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 
</application> 

</manifest> 

enter image description here

+0

をご確認くださいあなたの(YourActivity)にxmlあなたの活動レイアウトを作成する場所 – Strider

+0

あなたの質問でコードを書式設定したかどうかはわかりませんが、どのメニューファイルも 'menus'サブディレクトリの' xml'ファイルを持つ必要があります。それはマニフェストの一部であってはなりません。 – PPartisan

+0

どこに置く必要がありますか?新しいフォルダを作成する必要はありますか?上記の画像を参照してください – Lucafraser

答えて

15

をJavaコードで、オプションメニューを表示するには、このonCreateOptionsMenuを追加し、

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.option_menu, menu); //your file name 
     return super.onCreateOptionsMenu(menu); 
    } 

くださいあなたres \ menu \ option_menuフォルダの下に、

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/new_game" 
    android:icon="@drawable/ic_new_game" 
    android:title="@string/new_game" 
    android:showAsAction="ifRoom"/> 
<item android:id="@+id/help" 
    android:icon="@drawable/ic_help" 
    android:title="@string/help" /> 
</menu> 

あなたはそのOUが使用できるためonOptionsItemSelectedすなわちonClickイベント、

@Override 
    public boolean onOptionsItemSelected(final MenuItem item) { 

     switch (item.getItemId()) { 
      case android.R.id.new_game: 
       //your code 
       // EX : call intent if you want to swich to other activity 
       return true; 
      case R.id.help: 
       //your code 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
+0

問題は解決していますか? @Lucafraser –

+0

問題は解決しましたが、どうすればオプションを追加できますか?私のアプリケーションにメニューロゴが表示されませんか? – Lucafraser

+0

このコードに従うと、オプションが追加されます。コードを実行して再度通知してください。 –

1

であるあなたはmy_menu.xmlという名前のファイルを作成しresディレクトリに、メニューディレクトリにmenuフォルダを作成する必要があります。そのファイルに次の行書き込み:あなたの活動に続いて

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/new_game" 
    android:icon="@drawable/ic_new_game" 
    android:title="@string/new_game" 
    android:showAsAction="ifRoom"/> 
<item android:id="@+id/help" 
    android:icon="@drawable/ic_help" 
    android:title="@string/help" /> 
</menu> 

を、次の操作を行います。

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

MainActivity.javaに2番目の部分を追加すると、 "Inflaterなどのシンボルを解決できません"というエラーが表示されます – Lucafraser

1

を設定したい場合は今、あなたはメニュー

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/new_game" 
android:icon="@drawable/ic_new_game" 
android:title="@string/new_game" 
android:showAsAction="ifRoom"/> 
<item android:id="@+id/help" 
android:icon="@drawable/ic_help" 
android:title="@string/help" /> 
</menu> 

ようmenu.xmlディレクトリにRES->メニューを作成する必要があります次に、必要

コードの下
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 
    if (id == R.id.help) { 

     //do something 
     return true; 
    } 
    if (id == R.id.new_game) { 

     //do something 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
3

での活動からあなたのメニューを作成するために、あなたはを使用する必要があります

アクティビティの標準オプションメニューの内容を初期化します。 にメニュー項目を配置する必要があります。

オプションメニューが初めて表示されるのは、 です。メニューが表示されるたびに更新するには、 onPrepareOptionsMenu(メニュー)を参照してください。

onCreateOptionsMenu(メニューメニュー)Activityクラスでオーバーライドする必要が方法。これによりメニューが作成され、ブール値が返されます。 inflateは、XMLリソースからメニュー階層を膨張させます。

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.option_menu, menu); // set your file name 
     return super.onCreateOptionsMenu(menu); 
    } 

あなたoption_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/item_First" 
      android:title="@string/item_First" 
      android:showAsAction="ifRoom"/> 
    <item android:id="@+id/save_menu" 
      android:title="@string/save" 
      android:showAsAction="ifRoom"/> 
    <item android:id="@+id/item_Second" 
      android:title="@string/item_First" 
      android:showAsAction="ifRoom"/> 

</menu> 

あなたがたManifest.xmlに置き、それを置かないでください、間違った場所に置いてデモAndroid Option Menu Example

関連する問題