Реализация меню опций в Android Studio
Как реализовать меню опций в моем приложении для android? Я попробовал код Android Разработчик но я получаю ошибки. Вот такие: меню элементов должно быть объявлено. Вот мой код
<?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>
4 ответов
в вашем коде java добавьте это onCreateOptionsMenu
показать optionMenu,
@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>
теперь, если вы хотите установить onOptionsItemSelected
i.e событие onClick для этого ou может использовать,
@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);
}
}
вы должны использовать onCreateOptionsMenu (Menu menu)
инициализировать содержимое меню стандартных параметров действия. Вы следует разместить пункты меню в меню.
это вызывается только один раз, в первый раз меню опций отображается. Чтобы обновлять меню при каждом его отображении, см. onPrepareOptionsMenu(меню).
onCreateOptionsMenu(меню) метод, который нужно переопределить в Класс активности. Это создает menu и возвращает логическое значение. 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>
пожалуйста, проверьте demo Пример Меню Опций Android
вам нужно создать menu.xml
в каталоге res - > меню, как меню
<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) {
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);
}