7

Dovrebbe essere abbastanza semplice ma potrebbe non esserlo.Gonfia ActionBarSherlock Menu definito in XML

Quando si utilizza la barra delle azioni in Android 3.0+, è possibile definire le voci di menu in formato XML o in codice. Preferisco codificarli in xml in quanto le barre di azione si basano su un'interfaccia utente più funzionale.

In un giorno medio, si può usare questo per gonfiare il codice XML in un menu

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Menu is defined inside 'res/menu/...xml 
    getMenuInflater().inflate(R.menu.activity_home, menu); 
    return true; 
} 

e il file XML sarebbe simile a questa

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/menu_settings" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:title="@string/menu_settings"/> 
    <item 
     android:id="@+id/menu_item_menu" 
     android:icon="@drawable/menu_off_128" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/inbox_string"/> 
    <item 
     android:id="@+id/menu_item_gallery" 
     android:icon="@drawable/gallery_off_128" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/gallery_string"/> 
    <item 
     android:id="@+id/menu_item_inbox" 
     android:icon="@drawable/inbox_off_128" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/inbox_string"/> 
    <item 
     android:id="@+id/menu_item_contact" 
     android:icon="@drawable/phone_off_128" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/contact_string"/> 

</menu> 

In questo momento, sono di fronte a il problema di rendere la barra delle azioni compatibile all'indietro e actionbarsherlock sembra essere il più piacevole da usare e popolare. Quindi ho provato quanto sopra con actionbarsherlock e purtroppo ci sono problemi di compilazione.

Vale a dire che la classe Menu restituita dall'infatturatore proviene da "Android.view.menu" e non da "com.actionbarsherlock.menu". Sono andato a scavare attraverso gli esempi su Github ma tutti hanno il menu definito in codice.

Quindi qualcuno ha maneggiato per ottenere un menu actionbarsherlock che funziona con un layout basato su file XML?

risposta

23

provare questo

@Override 
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
     getSupportMenuInflater().inflate(R.menu.your_menu, menu); 
     return true; 
} 
+0

com.actionbarsherlock.view.Menu dove mi metterò questa classe .. qui è il mio link http://stackoverflow.com/questions/12779308/how-to-use-menu-in-layout of question. posso usare questo esempio sopra al mio progetto. –

+0

Siete in grado di testare questo con Robolectric per caso? Sembra che non possa gonfiare il mio menu dalla risorsa, dando una Risorsa $ NotFoundException. –

5

Sono appena tornata da questo problema io stesso.

Che cosa si vuole fare è chiamare getSupportMenuInflater() al posto digetMenuInflater() in questo modo:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 
Problemi correlati