Меню параметров Отмена события [Android] - PullRequest
1 голос
/ 19 октября 2010

Начиная с базового подхода - меню параметров.

Вопрос: Как лучше всего захватить событие cancel (return)?Т.е. пользователь меняет свое мнение и нажимает стрелку назад.Проблема в том, что я хотел бы отменить мою ветку приложения.

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {

  onPause();

  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.game_menu, menu);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // Handle item selection
  switch (item.getItemId()) {

  case R.id.preferences:
   Intent settingsActivity = new Intent(this, PreferencesActivity.class);
   startActivity(settingsActivity);
   return true;

  case R.id.quit:
   finish();
   return true;

  default:
   return super.onOptionsItemSelected(item);
  }
 }

Есть ли что-то вроде @Override onCancelOptionsMenu ??

Ответы [ 2 ]

3 голосов
/ 19 октября 2010

Я думаю, что вы ищете функцию onOptionsMenuClosed .

2 голосов
/ 21 августа 2013

только с помощьюOptionsMenuClosed () мы не можем различить, если пользователь отменил меню с помощью кнопки назад / меню или если был выбран элемент.

Мы можем эмулировать событие onCancel (), используя ie:

onOptionsMenuClosed () onOptionsItemSelected () и логическое значение для сохранения состояния:

private boolean bMenuCancelled = true;

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
   if(item.getItemId()<= YOUR_MAX_MENU_ITEM && item.getItemId()>= YOUR_MIN_MENU_ITEM)
        bMenuCancelled = false;
   else
        bMenuCancelled = true;

   //...
}

@Override
public void onOptionsMenuClosed(Menu menu)
{
  super.onOptionsMenuClosed(menu);

  if(bMenuCancelled)
      //here the menu has been closed by clicking outside the menu
  else
      //here the menu has been closed by selecting an item

}
...