Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Menu Inflater ? Não entendi oque ele esta de fato fazendo.

Beleza digita Menu Inflater e a magica acontece mas oque ele esta de fato fazendo ?

Esta INFLANDO um XML ? Hãn ?

EDIT1: Outras duvidas, o metodo onCreateOptionsMenu recebe um parametro do tipo "Menu", ou seja ele recebe um objeto Menu, logo quem chama este metodo deve passar este objeto para ele. Mas quem esta chamando este metodo ?

A logica dentro deste metodo é a seguinte.

...
        MenuInflater formMenu = getMenuInflater();
        formMenu.inflate(R.menu.menu_formulario,menu);
...

Então veja se estou certo, eu crio uma variavel do tipo MenuInflater e atribuo a ela uma instancia de MenuInflater que esta sendo capturada pelo "getMenuInflater()", certo? Poderia eu criar esta instancia dando um "new MenuInflater()" e o resultado seria o mesmo, se não, porque não?

1 resposta
solução!

Olá Lucas,

O MenuInflater tem por objetivo ler um arquivo xml e criar os objetos correspondentes ao menu descrito neste mesmo xml. Ele vai olhando item por item do xml, criando os MenuItem e adicionando no menu que passamos como parâmetro no método inflate().

Se você preferir você pode sim instanciar um MenuInflater fazendo:

MenuInflater inflater = new MenuInflater(this)

A diferença nesse caso é que você estaria criando mais uma instância de um objeto que já está pronto e acessível em qualquer Activity. Por esse motivo, preferimos chamar o método getMenuInflater(), para aproveitar o MenuInflater que já vem pronto e que está disponível na nossa Activity.

Sobre a sua outra pergunta, o onCreateOptionsMenu() é invocado durante a criação da Activity no momento em que a ActionBar é construída. Isso significa que esse método vai ser chamado pelo próprio Android no momento em que sua Activity estiver sendo criada (mais especificamente no onCreate).