
Oggi vedremo come creare un menù all’interno della nostra applicazione e come modificare dinamicamente il layout a seconda delle opzioni selezionate.
Creiamo come sempre un nuovo progetto (new Android Application Project), e lo chiamiamo menu (non menù, senza accento e senza molta fantasia).
Creiamo ora il layout: l’idea è avere un ImageView nella quale viene visualizzata un’immagine differente a seconda della selezione. Creiamo perciò la cartella drawable e carichiamo queste 2 immagini (M e F). Inseriamone una, ad esempio m.png, che sarà la nostra immagine di default.
Occupiamoci ora del menù: Eclipse dovrebbe avervi creato in automatico la cartella menu con al suo interno il file main.xml, e non solo: infatti nel file MainActivity.java dovremmo trovare queste righe di codice, ignorate o eliminate nelle scorse lezioni:
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }
Con questo caricheremo il menu alla pressione del tasto fisico (o in alcuni smartphone touch) corrispondente sul terminale. Apriamo il file main.xml e scriviamo:
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/m" android:title="M"/> <item android:id="@+id/f" android:title="F"/> </menu>
Appariranno così nel menù 2 scelte. Ora dobbiamo specificare le azioni da intraprendere a seconda della scelta. Per questo il file MainActivity.java apparirà così:
package com.example.menu; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ImageView; public class MainActivity extends Activity { ImageView m_f; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); m_f=(ImageView)findViewById(R.id.imageView1); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch ( item.getItemId() ) { case R.id.m: m_f.setImageResource(R.drawable.m); return true; case R.id.f: m_f.setImageResource(R.drawable.f); return true; } return false; } }
Il metodo onOptionItemSelected() viene invocato appena si sceglie una delle 2 opzioni. Il costrutto switch-case è un costrutto Java per intraprendere azioni differenti a seconda dei casi, e il metodo setImageResource() serve per cambiare il campo src di una ImageView dinamicamente.
Naturalmente questo è solo un esempio di utilizzo dei menù, potete sbizzarrirvi e in modo simile effettuare azioni differenti quali aprire una nuova activity (vedi Lezione5), ecc…
Puoi guardare tutte le lezioni passate consultando l’indice del corso di programmazione android