Метод onOptionsItemSelected.Для чего в case прописывается return true?

140
21 февраля 2019, 01:30
public boolean onOptionsItemSelected(MenuItem item) {
    header = (TextView) findViewById(R.id.header);
    switch(item.getItemId()){
        case R.id.settings:
            header.setText("Вы вошли в настройки");
            Toast.makeText(this,"Settings",Toast.LENGTH_SHORT).show();
            return true;
        case R.id.open:
            header.setText("Вы открыли ресурс");
            Toast.makeText(this,"Open",Toast.LENGTH_SHORT).show();
            return true;
        case R.id.save:
            header.setText("Вы сохранили изменения");
            Toast.makeText(this, "Save", Toast.LENGTH_SHORT).show();
            return true;
    }
    return super.onOptionsItemSelected(item);
}
Answer 1

Оператор switch реализован таким образом, что после совпадения первого case, выполняются все остальные case, пока не встретится оператор передачи управления. Обычно это break - выход из оператора case. Но встречается и return - выход из всего метода.

Если в данном коде заменить return на break, то выполнится еще и родительский onOptionsItemSelected, а это не требуется, т.к. условие уже отработано

READ ALSO
Событие при нажатии Enter

Событие при нажатии Enter

Есть TextView и при нажатии клавиши Enter курсор переходит на новую строку но в начало линии добавляется номер строки с точкой и пробеломИ все хорошо,...

181
Cannot resolve symbol 'NameValuePair'

Cannot resolve symbol 'NameValuePair'

Знаю, что в gradlebuild нужно внести запись, но у меня в проекте нет такого файла, т

177
Порядок вызова методов в Java

Порядок вызова методов в Java

Вывод на консоль в данном случае получается FileNotFoundExceptionКак именно осуществляется выбор нужного метода для вызова?

208
Как работает ключевое слово final?

Как работает ключевое слово final?

А ещё есть специальное ключевое слово final, и если оно присутствует в объявлении переменной, вам будет разрешено присвоить значение этой переменной...

257