2012-05-24 13 views
5

Sto cercando di implementare un elenco a discesa come navigazione per la barra delle azioni in Android. Riesco a vedere l'elenco a discesa e gli articoli, ma non riesco a ottenere l'evento di clic.Android: barra a discesa Sherlock

Non sono sicuro di quello che mi manca da quando stavo seguendo il tutorial in http://developer.android.com/guide/topics/ui/actionbar.html

Questo è il mio codice:

public void onCreate(Bundle savedInstanceState) { 
     OnNavigationListener mOnNavigationListener; 
     super.onCreate(savedInstanceState); 
     // setContentView(R.layout.info_layout); 
     // getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 

     getSupportActionBar().setNavigationMode(getSupportActionBar().NAVIGATION_MODE_LIST); 
     SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.navigation_array, android.R.layout.simple_dropdown_item_1line); 
     mOnNavigationListener = new OnNavigationListener() { 
      public boolean onNavigationItemSelected(int itemPosition, long itemId) { 
       switch (itemPosition) { 
       case 1: 
        Intent i = new Intent(); 
        i.setClass(getApplicationContext(), ZoekAndBoekActivity.class); 
        break; 
       case 2: 
        break; 
       case 3: 
        break; 
       case 4: 
        break; 
       case 5: 
        break; 
       } 
       // return super.onOptionsItemSelected(itemPosition); 
       return true; 
      } 
     }; 
     getSupportActionBar().setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener); 
    } 

Grazie mille in anticipo!

risposta

4

Sei sicuro di non ricevere eventi di clic? Stai creando l'intento ma non fai niente con esso. Provare qualcosa di simile:

switch (itemPosition) { 
    case 1: 
     Intent i = new Intent(); 
     i.setClass(getApplicationContext(), ZoekAndBoekActivity.class); 
     startActivity(i); 
     break; 
    ... 
} 

o aggiungere scrittura per accedere per essere sicuri:

public boolean onNavigationItemSelected(int itemPosition, long itemId) { 
    Log.d("SomeTag", "Get click event at position: " + itemPosition); 
    switch (itemPosition) { 
     ... 
    } 
} 

e vedere nell'output logcat per il messaggio con "SomeTag" quando si fa clic su un oggetto.

+0

non fa nulla, non ha nemmeno entrare nel onNavigationItemSelected – noloman

+2

@noloman Se la tua soluzione differisce da quanto è stato dato qui, sarebbe utile per gli altri se la postassi. –

+0

Come posso ottenere l'articolo della posizione selezionata? –

-1

penso che l'istruzione return deve essere false all'interno del caso interruttore, e il vostro caso deve avere parentesi .. Speranza che aiuta :)))

+1

Un'istruzione case non ha bisogno di parentesi e ogni caso deve restituire 'true'. –

Problemi correlati