2012-06-06 16 views
22

Ieri, ho trovato una grande libreria che mi ha permesso di avere un "menu di facebook" con un pulsante in alto a sinistra di una barra delle azioni che, se premuto, scorreva in un menu di elementi da sinistra .Override onOptionsItemSelected from SherlockFragmentActivity

Il problema è che desidero utilizzare la libreria ActionBarSherlock per assicurarmi che la mia applicazione sia retrocompatibile con la barra delle azioni. Quando si utilizza la libreria di I, tra le altre cose, la necessità di sovrascrivere onOptionsItemSelected come tale:

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

Ora sono andato in biblioteca e ho visto che lo sviluppatore aveva fatto onOptionsItemSelected finale. L'ho rimosso e ho provato a scavalcarlo di nuovo solo per scoprire che il prodotto era che ogni volta che premevo il pulsante non succede nulla. Niente di niente.

Qualche idea su come utilizzerei la libreria darvds_ribbonmenu insieme a actionbarsherlock?

+0

Verificare se si estende ** SherlockFragmentActivity ** se lo si estende è possibile Sostituire – Venky

+7

Si prega di leggere più del titolo della mia domanda. – CodePrimate

risposta

50

Si scopre che quando si utilizza ABS, è necessario specificare lo spazio dei nomi di MenuItem per assicurarsi di ignorare il metodo corretto. La mia soluzione è stata la seguente:

@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

Oppure potresti semplicemente cambiare le tue importazioni. Il metodo della superclasse con il parametro 'android.view.MenuItem' è' final' per evitare di sovrascrivere quello sbagliato. –

+0

Grazie, anche questo mi ha aiutato – user1071138

17

Change import android.view.MenuItem; a import com.actionbarsherlock.view.MenuItem;. In caso contrario, stai utilizzando solo un valore completamente diverso MenuItem rispetto a quello che stai importando.