giovedì 16 febbraio 2012

Option Menu

Per creare un Option menu, ovvero il menu che appare in basso allo schermo, si puo' procedere per due vie.
Prima di tutto si deve segnalare che non esiste un sistema unico per aprire un Option Menu. Sull'emulatore si deve premere il tasto Menu

Cerchiato in rosso il tasto di Option Menu

Sui cellulari l'icona e la posizione del tasto di Option Menu puo' variare. Per esempio sull'Ideos
Cerchiato in rosso il tasto Option Menu su Ideos



   //gestione della creazione ed interazione con l'option menu

La prima via e' quella totalmente via codice. Nella prima funzione si crea il menu, nella seconda vengono gestiti gli eventi legati al menu
-----------------------------------------------------------------------------------------------------------------
   public boolean onCreateOptionsMenu(Menu menu)
   {
menu.add(1,1,0,R.string.cancella).setIcon(R.drawable.delete_item);
menu.add(1,2,1,R.string.calibra).setIcon(R.drawable.tool);
menu.add(1,3,2,R.string.help).setIcon(R.drawable.help);
return true;
   }
   // gestione degli eventi dell'option menu
   public boolean onOptionsItemSelected(MenuItem item)
   {
    switch(item.getItemId())
    {
    case 1:
       return true;
    case 2:
    return true;
    case 3:
    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
     dialog.setTitle(R.string.help_title);
     dialog.setMessage(R.string.help_text);
     dialog.show();
    return true;
    }
    return false;
   }

-----------------------------------------------------------------------------------------------------------------

nel secondo caso invece ci si avvale di un file xml esterno denominato option_menu.xml che risiede in /res/menu
-----------------------------------------------------------------------------------------------------------------
<menu xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:id="@+id/delete_item" android:icon="@drawable/delete_item" android:title="@string/delete_item" />
</menu>

-----------------------------------------------------------------------------------------------------------------


il codice crea un Inflater e lo collega a R.menu.option_menu. La gestione degli eventi risulta simile al caso precedente

-----------------------------------------------------------------------------------------------------------------
   public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.option_menu, menu);
        return true;
    }    
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.delete_item:
   
              return true;
        default:
              return super.onOptionsItemSelected(item);
        }
    }
-----------------------------------------------------------------------------------------------------------------