2010-10-19 4 views
0

Начало с базовым подходом - Меню опций.Опции Меню Отмена события [Android]

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

@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

just whith onOptionsMenuClosed() мы не можем отличить, отменено ли пользователем меню с помощью кнопки back/menu или если был выбран элемент.

Мы можем подражать OnCancel() событие, используя т.е .:

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 

} 
Смежные вопросы