Estava visualizando o seguinte código(em que fiquei com uma dúvida sobre uma estrutura relacionada à linguagem em si):
//...
private void CreateMenu(Menu menu){
MenuItem mnu1 = menu.add(0, 0, 0, "Item 1");
{ //Início do bloco de código "confuso"(para mim)
mnu1.setAlphabeticShortcut('a');
mnu1.setIcon(R.drawable.ic_launcher);
} //Fim do bloco de código
MenuItem mnu2 = menu.add(0, 1, 1, "Item 2");
{
mnu1.setAlphabeticShortcut('b');
mnu1.setIcon(R.drawable.ic_launcher);
}
MenuItem mnu3 = menu.add(0, 3, 3, "Item 3");
{
mnu1.setAlphabeticShortcut('c');
mnu1.setIcon(R.drawable.ic_launcher);
}
MenuItem mnu4 = menu.add(0, 4, 4, "Item 4");
{
mnu1.setAlphabeticShortcut('d');
mnu1.setIcon(R.drawable.ic_launcher);
}
//...
Como vocês podem ver, tenho um bloco de código após as declarações dos itens de menu. Me sinto confuso em relação a esse bloco, pois não conheço sua utilidade e gostaria de saber mais a respeito(Em que momento ele será executado, e, se for após a declaração do item de menu, por que colocar essa parte de código entre chaves).
Agradeço pela atenção.
Não tenho certeza se entendi sua pergunta.
Esse codigo é parte da construção de um menu.
O que tem isso de estranho?
Não me refiro à construção do menu, me refiro à funcionalidade do bloco de código(entre chaves) após as declarações de instâncias MenuItem. Quando esse bloco será executado(pois normalmente utilizamos chaves na criação de métodos, construtores, classes e etc… Mas desconheço essa forma de uso das chaves e queria saber justamente isso - tanto é que a dúvida não reside na API, mas na forma que utilizaram a linguagem…)
É que ele está achando esquisito haver chaves assim “soltas”, ou seja, sem um “if”, “while”, “try” ou cabeçalho de método antes delas.
Pense nas chaves como sendo parênteses em uma expressão matemática. Não faz mal você botar mais parênteses que o necessário, ou seja,
x = (x + 1) + (x + 2);
é a mesma coisa que
x = x + 1 + x + 2;
Na verdade, as chaves introduzem um “novo escopo” (ou seja, dentro delas, você pode declarar novas variáveis locais, que serão “esquecidas” quando você sair do escopo. ) Esse é um uso típico de chaves que estão assim “soltas”.
Por exemplo:
private void CreateMenu(Menu menu){
MenuItem mnu1 = menu.add(0, 0, 0, "Item 1");
{
char shortcut = 'a';
mnu1.setAlphabeticShortcut(shortcut);
mnu1.setIcon(R.drawable.ic_launcher);
}
MenuItem mnu3 = menu.add(0, 3, 3, "Item 3");
{
char shortcut = 'c';
mnu3.setAlphabeticShortcut(shortcut);
mnu3.setIcon(R.drawable.ic_launcher);
}
Note que a primeira definição da variável “shortcut” só vale até fechar a chave. A segunda definição , da mesma forma, só vale até fechar a chave correspondente.
Pow kra, agora entendi… Você explica muito bem, Vlw pela atenção ai. =D
cara, esses codigos na sua parte “confusa”, servem para setar opcoes para o usuario, icones, mnemonics, tamanho, tudo o que for relacionado ao item do menu entre as chaves sera dele e somente dele, sem esse codigo seu menu seria somente o texto, sem atalho nem cone.