studio sgoliver personalizar herramientas busqueda barra bar actionbar android drop-down-menu actionlistener actionbarsherlock

android - personalizar - sgoliver toolbar



Android: barra de acción de Sherlock desplegable (2)

Estoy intentando 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.

No estoy seguro de lo que me estoy perdiendo desde 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 por adelantado!


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

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

o agregue la escritura al registro para estar seguro:

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

y vea en la salida de logcat el mensaje con "SomeTag" cuando hace clic en los elementos.


Creo que la declaración de devolución debe ser falsa dentro de la caja del interruptor, y su caso debe tener corchetes. Espero que ayude :)))