7

Powinno być proste, ale może nie być.Dymki Menu ActionBarSherlock zdefiniowane w XML

Podczas korzystania z paska działań w systemie Android 3.0+ istnieje możliwość zdefiniowania pozycji menu w formacie XML lub w kodzie. Wolę kodować je w języku xml, ponieważ paski akcji czują się bardziej oparte na interfejsie niż na funkcjonalności.

Na średniej dzień, byś to wykorzystać, aby napompować xml do menu

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

a plik XML będzie wyglądać następująco

<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> 

Teraz mam do czynienia z problem z kompatybilnością wsteczną i paskiem akcji wydaje się być najbardziej przyjemny w użyciu i popularny. Tak więc wypróbowałem powyższe z actionbarsherlock i niestety są problemy czasu kompilacji.

Mianowicie, że klasa Menu zwrócona przez nadmuchiwacz pochodzi z "Android.view.menu", a nie z "com.actionbarsherlock.menu". Przeszukałem próbki na githubie, ale wszystkie mają menu zdefiniowane w kodzie.

Czy ktokolwiek wymyślił menu akcji działające z układem plików XML?

Odpowiedz

23

spróbować

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

com.actionbarsherlock.view.Menu gdzie będę się z tej klasy jest tutaj .. mój link http://stackoverflow.com/questions/12779308/how-to-use-menu-in-layout of question. czy mogę użyć powyższego przykładu do mojego projektu. –

+0

Czy jesteście w stanie przetestować to przy pomocy Robolectric? Wygląda na to, że nie może zawyżać mojego menu z zasobu, podając wyjątek Resources $ NotFoundException. –

5

Wystarczy miał ten problem samodzielnie.

Co chcesz zrobić, to zadzwonić getSupportMenuInflater() zamiast getMenuInflater() tak:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 
Powiązane problemy