Se pueden definir los menús mediante XML y luego inflarlos en el método onCreate() del menú, esto hace que su aplicación presente un código más limpio y separa su diseño en XML lo cual resulta más fácil de visualizar.
Para comenzar debemos crear una carpeta del proyecto en el directorio res/ aquí es donde se deberían guardar todos los XML que definen los menús de la aplicación.
En un layout de XML para crear un menú hay tres elementos válidos: <menu>, <group> e <item>. El artículo (item) y los elementos de grupo (group) deben ser hijos de un menú.
Por ejemplo, vamos a definir un menú de opciones, comenzamos creando el XML donde vamos a definir nuestro menú, vamos a llamarle options_menu.xml y lo pondremos dentro del directorio: res/menu.
Luego en el onCreateOptionsMenu() debemos inflarlo usando el recurso: MenuInflater.inflate()
getMenuInflater() devuelve el MenuInflater para el contexto de nuestra actividad. Entonces llamamos a inflate() pasando un puntero a nuestro recurso de menú y el objeto de tipo Menú definido en la llamada a la función.
Aunque pueda parecer un poco más engorroso este método de crear los menús de nuestra aplicación cuando se tratan de muchas opciones para los menús, esta vía es más cómoda y hace nuestro código más limpio.