У меня есть приложение, в котором я хочу отображать свое собственное действие в меню, когда пользователь нажимает кнопку меню. Я использую метод onCreateOptionsMenu для запуска моей активности, возвращая false, чтобы не отображалось меню. Это мой код:
Intent intentMenu = new Intent(this, ActivityMenu.class);
startActivityForResult(intentMenu, 0);
return false;
Это работает, но только при первом нажатии кнопки меню. Я понимаю, что этот метод вызывается только один раз. Как я могу заставить его вызываться каждый раз, когда пользователь нажимает кнопку меню? Или я должен пойти по другому подходу?
Не используйте onCreateOptionsMenu(), неправильное место. Вот как вы это делаете, переопределяя метод onKeyDOwn() в своей деятельности:
@Override
public boolean onKeyDown (int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU || keyCode == KeyEvent.KEYCODE_BACK) {
startActivityForResult(new Intent(this, ActivityMenu.class), 0);
return true;
}
return super.onKeyDown( keyCode, event );
}
создайте свой класс меню следующим образом:
public class GlobalMenu extends Activity
{
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.global_menu, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case R.id.GlobalSettings:
// Write code to perform action
break;
case R.id.Globalrefresh:
// Write code to perform action
break;
case R.id.Globalexit:
// Write code to perform action
break;
default:
}
return true;
}
}
Теперь добавьте этот класс из своей основной деятельности, в которой вы хотите отображать меню, когда вы нажимаете кнопку меню.
И создать XML файл выглядит так: