Olá.
Por que devo usar return false em vez de break?
switch (item.getItemId()) {
case R.id.menu_novo: Toast.makeText(ListaAlunosActivity.this, "Aluno", Toast.LENGTH_LONG).show();
return false; //break;
Obrigado.
Olá.
Por que devo usar return false em vez de break?
switch (item.getItemId()) {
case R.id.menu_novo: Toast.makeText(ListaAlunosActivity.this, "Aluno", Toast.LENGTH_LONG).show();
return false; //break;
Obrigado.
Olá Julius! Creio que nesse caso não faz diferença você usar break
ou return false
. Ambos estão sendo utilizados para que assim que escolhida uma opção, apenas aquele código seja executado. Mas por uma questão de semântica o break
se encaixa melhor. Pois o break
é utilizado para você interromper um loop ou uma execução de código e nesse casso é justamente o que queremos. Creio que a resposta foi utilizada com o return false
apenas para indicar uma segunda forma de fazer o encerramento da execução.
Espero que tenha ajudado. Qualquer coisa só perguntar! Bons Estudos!
Valeu Romário, mas na explicação da aula eles pedem que seja usado o return.
Dizem o porquê, mas não entendi exatamente. A explicação me parece insuficiente.
Aguardo retorno. Obrigado.
Na explicação? Mas tanto na explicação escrita como no video ambos utilizam o break. Qual explicação você esta falando?
Você tem razão Romário. Não está em nenhuma explicação.
Eu me confundi e formulei errado a questão.
Não há um retorno false dentro do switch.
Na verdade, no exercício 7, há uma orientação referente ao retorno do método onOptionsItemSelected que diz: "Importante: Você deve retornar false para que ele termine o processamento da seleção."
Então essa é a dúvida. Por que retornar false e não retornar super.onOptionsItemSelected(item)?
Acho que cabe uma explicação sobre esse "processamento de seleção".
Valeu Romário.
Então Julius, como havia dito, ambos desempenham a mesma função. Tanto o return false
como o break
tem por objetivo encerrar a execução do código não deixando prosseguir. Mas vou tentar deixar mais claro.
O método onOptionsItemSelected(item)
é um método boolean.
Então ele tem que retornar ou o valor true ou o valor false. Por padrão, o método quabdo chamado oela superclasse a qual ele pertence retorna false. Mas o que significa esse true ou false? Quando o método retorna true ele não encerra sua execução apenas no item selecionado.
Ou seja.. digamos que você tenha 3 itens no seu Menu.. Item A, Item B, Item C.
Caso você selecione o item A e o mesmo retorne true o menu não encerrará e parte novamente para a verificação se um outro item será selecionado. No entanto, caso você selecione o item A é ao final o msm retorne false.. O menu apenas executará o código e encerrará.
Quanto a sua dúvida Por que retornar false e não retornar super.onOptionsItemSelected(item)?
Não faz diferenca. Uma vez que como eu disse, por padrão quando esse método é chamado pela superclasse a qual ele pertence ele retorna a false. Então ao dizermos super.onOptionsItemSelected(item)
é o mesmo de estarmos colocando return false
.
Faça o teste é substitua o return false por super.onOptionsItemSelected(item)
é vc verá q nada mudará e o código continuará rodando como antes.
Espero que eu tenha ajudado. Bons Estudos!
Boa tarde Julius,
O valor de retorno do método onOptionsItemSelected
indica se o evento de item de menu selecionado deve ser consumido ou não. Se você devolver true
, o evento é consumido e o único comportamento realizado é aquele que você implementou no método. Caso contrário, se você devolver false
, o Android irá continuar o tratamento do evento fazendo algumas chamadas adicionais.
Por exemplo, é possível associar uma Intent
com um item de menu. Você pode fazer isso da seguinte maneira:
MenuItem item = menu.add("Novo aluno");
Intent intent = new Intent(this, FormularioActivity.class);
item.setIntent(intent);
Dessa forma, quando você clicar no item de menu "Novo aluno", primeiro o Android invoca o método onOptionsItemSelected
. Se este método devolver false
, o evento não é consumido e então a Intent
associada ao item de menu é executada pelo Android. Caso o método devolva true
, estamos indicando que não queremos que o tratamento do evento continue e portanto o Android não executa a Intent
associada ao item de menu.
Abraço!
isso mesmo Jeferson! Acabei me complicando ali em cima e inverti. Quando chamamos o return true
o evento é simplesmente consumido sem efetuar nenhuma chamada ao demais. Enquanto se utilizarmos o return false
ele poderá verificar o id do evento em outras funções.
Ok Jeferson! Entendido. Obrigado pela ajuda.