2012-05-24 21 views
5

Estoy tratando de implementar una lista desplegable como navegación para la barra de acciones en Android. Puedo ver la lista desplegable y los elementos, pero no puedo obtener el evento de clic.Android: barra de acciones de Sherlock desplegable

No estoy seguro de lo que me falta, ya que estaba siguiendo el tutorial en http://developer.android.com/guide/topics/ui/actionbar.html

Este es mi código:

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); 
    } 

Muchas gracias de antemano!

Respuesta

4

¿Estás seguro de que no obtienes eventos de clics? Estás creando intención, pero no hace nada con eso. Intentar algo como esto:

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

o añadir la escritura para registrar para estar seguro:

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

y ver en la salida Logcat de mensaje con "SOMETAG" al hacer clic en los elementos.

+0

no hace nada, ni siquiera entra en el onNavigationItemSelected – noloman

+2

@noloman Si su solución difiere de la proporcionada aquí, sería útil para otros si la publicara. –

+0

¿Cómo puedo obtener el artículo de la posición seleccionada? –

-1

creo que la instrucción de retorno debe ser falsa dentro de la caja del interruptor, y su caso debe tener soportes .. espero que ayude :)))

+1

Una declaración de caso no necesita corchetes y cada caso debe devolver 'verdadero'. –

Cuestiones relacionadas