OnSupportNavigateUp() не вызывается

Я разрабатываю приложение с ActionBars, которое поддерживает Gingerbread и up. Поэтому в основном я использую библиотеку поддержки и расширяю

ActionBarActivity

для всех моих действий. Все работает хорошо, за исключением

onSupportNavigateUp()

метод. Он просто не вызван, как указано в документации.

Этот метод вызывается всякий раз, когда пользователь выбирает переход вверх в пределах ваша иерархия активности приложений из панели действий.

Это довольно просто, но я не смог понять, почему он работает не так, как ожидалось, и не помог Googling. Это ошибка? или я чего-то не хватает?

Ответ 1

если вы переопределите onOptionsItemSelected, тогда onSupportNavigateUp не будет вызываться.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                // handle ⬅️ button here 
                break;
        }
        return true;
}

Ответ 3

Как уже говорилось, если вы переопределите OnOptionsItemSelected, OnSupportNavigateUp не будет вызываться. вы можете убедиться, что он вызван, добавив значение по умолчанию: case внутри OnOptionsItemSelected, например:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.something:
            Intent intent = new Intent(this,someActivity.class);
            startActivity(intent);
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

super.onOptionsItemSelected(item) будет удостовериться, что вызывается OnSupportNavigateUp. Это на случай, если вы не хотите, чтобы дело было рассмотрено внутри вашего OnOptionsItemSelected

Ответ 4

Кто знал... onSupportNavigateUp() работает только с 4.0 и выше. Ниже вызывается onNavigateUp().