2012-06-06 10 views
22

Ayer, encontré una gran biblioteca que me permitía tener un "menú de Facebook" con un botón en la parte superior izquierda de una barra de acción que, al presionarlo, se deslizaba en un menú de elementos de la izquierda .Reemplazando onOptionsItemSelected from SherlockFragmentActivity

El problema es que deseo hacer uso de la biblioteca ActionBarSherlock para asegurarme de que mi aplicación sea compatible con la barra de acciones. Cuando se utiliza la biblioteca que, entre otras cosas, que sobreescribir onOptionsItemSelected como tal:

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    int id = item.getItemId(); 

    if (id == android.R.id.home) { 

     rbmView.toggleMenu(); 

     return true; 

    } else { 
     return super.onOptionsItemSelected(item); 
    } 
} 

Ahora fui a la biblioteca y vi que el desarrollador había hecho onOptionsItemSelected última. Lo eliminé e intenté anularlo de nuevo solo para descubrir que el producto era que cada vez que presiono el botón no pasaba nada. Nada en absoluto.

¿Alguna idea de cómo utilizaría la biblioteca darvds_ribbonmenu junto con actionbarsherlock?

+0

Compruebe si extiende ** SherlockFragmentActivity ** si lo extiende puede anular – Venky

+7

Lea más sobre el título de mi pregunta. – CodePrimate

Respuesta

50

Resulta que al usar ABS necesitará especificar el espacio de nombre de MenuItem para asegurarse de que está anulando el método correcto. Mi solución fue la siguiente:

@Override 
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) 
{ 
    int id = item.getItemId(); 
    Log.d("item ID : ", "onOptionsItemSelected Item ID" + id); 
    if (id == android.R.id.home) { 
     rbmView.toggleMenu(); 

     return true; 

    } else { 
     return super.onOptionsItemSelected(item); 
    } 
} 
+32

O simplemente podría cambiar sus importaciones. El método de superclase con el parámetro 'android.view.MenuItem' es' final' para evitar que sobrescriba el correcto. –

+0

Gracias, esto también me ayudó – user1071138

17

Cambio import android.view.MenuItem; a import com.actionbarsherlock.view.MenuItem;. De lo contrario, solo está usando un MenuItem completamente diferente al que está importando.