2011-06-22 4 views
42

Ici, j'ai essayé de faire le menu des options, mais le menu ne s'affiche à l'écran, donc s'il vous plaît me guider là où je fais erreur ...Android, Comment créer l'option 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; 
} 
} 

Et mon fichier XML est 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> 

S'il vous plaît me guider,

+0

Est-ce le code d'activité complet? Où est la méthode onCreate? – Egor

+0

J'ai aussi écrit la méthode onCreate, mais après cela, je n'ai pas eu le menu à l'écran. –

+0

avez-vous appuyez sur le bouton de menu de l'émulateur? – Android

Répondre

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

et ne pas oublier d'appuyer sur le bouton de menu ou d'une icône ou un appareil Emulator

10

Changer votre onCreateOptionsMenu méthode pour retourner true. Pour citer the docs:

Vous devez renvoyer true pour que le menu s'affiche; Si vous retournez faux, il ne sera pas affiché.

26

s'il vous plaît voir: ==

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

Les icônes de menu n'apparaissent pas:/ – Zame

2

Remplacer retour super.onCreateOptionsMenu (menu) ; avec return true; dans votre onCreateOptionsMenu méthode Cela vous aidera

Et vous devriez également avoir la méthode onCreate dans votre activité

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

l'option était invisible avec le code. Dans onCreateOptionsMenu (menu Menu), j'ai changé return (super.onCreateOptionsMenu (menu)) pour renvoyer true qui l'a rendu visible. – Dexter

0

Les réponses précédentes ont couvert le menu traditionnel utilisé dans Android. Leur est une autre option que vous pouvez utiliser si vous êtes à la recherche d'un menu alternatif

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

poulie est un autre au menu traditionnel qui permet à l'utilisateur de sélectionner intuitivement une option pour une activité. Le menu est révélé en faisant glisser l'écran vers le bas et dans ce geste, l'utilisateur peut également sélectionner l'une des options.

0

La programmation de l'interface utilisateur Android est un peu difficile. Pour activer le menu Options, en plus du code que vous avez écrit, nous devons également appeler setHasOptionsMenu (true) dans votre méthode redéfinie OnCreate(). J'espère que cela vous aidera.

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

Si votre appareil est en cours d'exécution v.4.1.2 Android ou avant,
le menu ne figure pas dans l'action-bar.
Mais il peut être accessible via le Menu- (matériel) -Button.

0

Good Day je vérifié Et si vous choisissez vide Activity Vous n'avez pas construire dans les fonctions de menu BUILD Vous devez choisir Basic Activity De cette façon, vous Activity courrez onCreateOptionsMenu

Ou si Vous travaillez dans Vide Activity depuis le début Chenge dans styles.xml le

Questions connexes