2011-06-22 8 views
42

Tutaj starałem się menu opcji, ale menu nie jest wyświetlane na ekranie, więc prosimy kierować mi gdzie robię błąd ...Android, jak stworzyć opcja menu

MenuTest.java

public class MenuTest extends Activity { 
    @Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater=getMenuInflater(); 
    inflater.inflate(R.menu.more_tab_menu, menu); 
    return super.onCreateOptionsMenu(menu); 

} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) 
    { 
    case R.id.feeds: 
     break; 
    case R.id.friends: 
     break; 
    case R.id.about: 
     break; 
    } 
    return true; 
} 
} 

A mój plik XML jest more_tab_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:id="@+id/feeds" 
    android:title="Feeds"/> 
<item 
    android:id="@+id/friends" 
    android:title="Friends"/> 
<item 
    android:id="@+id/about" 
    android:title="About"/> 
</menu> 

proszę kierować do mnie,

+0

Czy to jest pełny kod aktywności? Gdzie jest metoda onCreate? – Egor

+0

Pisałem również metodę onCreate, ale potem nie dostałem menu na ekranie. –

+0

czy naciśniesz 'przycisk menu' z emulatora? – Android

Odpowiedz

38
public class MenuTest extends Activity { 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.more_tab_menu, menu); 

     // return true so that the menu pop up is opened 
     return true; 
    } 
} 

i nie zapomnij nacisnąć przycisk menu lub ikonę na emulatorze lub urządzenia

10

Zmień onCreateOptionsMenu metoda zwrotu true. Aby zacytować: the docs:

Należy zwrócić wartość true, aby menu mogło być wyświetlane; jeśli zwrócisz wartość false, nie będzie ona wyświetlana.

26

proszę zobaczyć: ==

private int group1Id = 1; 

int homeId = Menu.FIRST; 
int profileId = Menu.FIRST +1; 
int searchId = Menu.FIRST +2; 
int dealsId = Menu.FIRST +3; 
int helpId = Menu.FIRST +4; 
int contactusId = Menu.FIRST +5; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(group1Id, homeId, homeId, "").setIcon(R.drawable.home_menu); 
    menu.add(group1Id, profileId, profileId, "").setIcon(R.drawable.profile_menu); 
    menu.add(group1Id, searchId, searchId, "").setIcon(R.drawable.search_menu); 
    menu.add(group1Id, dealsId, dealsId, "").setIcon(R.drawable.deals_menu); 
    menu.add(group1Id, helpId, helpId, "").setIcon(R.drawable.help_menu); 
    menu.add(group1Id, contactusId, contactusId, "").setIcon(R.drawable.contactus_menu); 

    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case 1: 
     // write your code here 
     Toast msg = Toast.makeText(MainHomeScreen.this, "Menu 1", Toast.LENGTH_LONG); 
     msg.show(); 
     return true; 

    case 2: 
     // write your code here 
     return true; 

    case 3: 
     // write your code here 
     return true; 

    case 4: 
     // write your code here 
     return true; 

    case 5: 
     // write your code here 
     return true; 

    case 6: 
     // write your code here 
     return true; 

    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 
+2

Ikony menu nie są wyświetlane:/ – Zame

2

Wymień powrót super.onCreateOptionsMenu (menu) ; z return true; w swojej metodzie onCreateOptionsMenu Pomoże

I powinny mieć również metody onCreate w swojej działalności

7
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    new MenuInflater(this).inflate(R.menu.folderview_options, menu); 
    return (super.onCreateOptionsMenu(menu)); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    if (item.getItemId() == R.id.locationListRefreshLocations) { 
     Cursor temp = helper.getEmployee(active_employeeId); 
     String[] matches = new String[1]; 
     if (temp.moveToFirst()) { 
      matches[0] = helper.getEmployerID(temp); 
     } 
     temp.close();    
     startRosterReceiveBackgroundTask(matches); 
    } else if (item.getItemId()==R.id.locationListPrefs) { 
     startActivity(new Intent(this, PreferencesUnlockScreen.class)); 
     return true; 
    }   
    return super.onOptionsItemSelected(item); 
} 
+0

opcja była niewidoczna z kodem. Wewnątrz onCreateOptionsMenu (menu menu) zmieniłem powrót (super.onCreateOptionsMenu (menu)), aby zwrócić wartość true, która uczyniła ją widoczną. – Dexter

0

Dotychczasowe odpowiedzi objęły tradycyjne menu używane w Androidzie. Ich ma innej opcji można użyć, jeśli szukasz alternatywnego

https://github.com/AnshulBansal/Android-Pulley-Menu

menu pasowe jest alternatywna do tradycyjnego menu, które pozwala użytkownikowi wybrać dowolną opcję dla działalności intuicyjnie. Menu jest pokazywane poprzez przeciągnięcie ekranu w dół iw tym gestie użytkownik może również wybrać dowolną z opcji.

0

Programowanie Android UI jest nieco trudne. Aby włączyć menu Opcje, oprócz kodu, który napisałeś, musimy również wywołać setHasOptionsMenu (true) w twojej overridenowej metodzie OnCreate(). Mam nadzieję, że to ci pomoże.

2
import android.app.Activity; 
import android.os.Bundle; 
import android.view.*; 
import android.widget.*; 

public class AndroidWalkthroughApp2 extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // show menu when menu button is pressed 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.options_menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // display a message when a button was pressed 
     String message = ""; 
     if (item.getItemId() == R.id.option1) { 
      message = "You selected option 1!"; 
     } 
     else if (item.getItemId() == R.id.option2) { 
      message = "You selected option 2!"; 
     } 
     else { 
      message = "Why would you select that!?"; 
     } 

     // show message via toast 
     Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG); 
     toast.show(); 

     return true; 
    } 
} 
0

jeśli urządzenie działa Android v.4.1.2 lub wcześniej,
menu nie jest wyświetlane w akcji-bar.
Ale można do niego uzyskać dostęp za pomocą przycisku Menu- (sprzęt).

0

Good Day I sprawdzono jeśli zdecydujesz Empty Activity nie trzeba budować funkcji menu Do produkcji w Musisz wybrać Podstawowe Activity W ten sposób Activity potrwa onCreateOptionsMenu

Or jeśli pracujesz w pustym Activity od początku Chenge w styles.xml