2011-09-06 53 views
9

Ahora quiero agregarle un menú en la parte inferior de la pantalla. Escribí mucho sobre pero aún no conseguí cómo hacerlo. Mi problema principal es que no tengo un archivo xml en mi página principal. sus Liks mirada que:¿Cómo crear un menú programáticamente en Android?

public class start extends ListActivity { 
     static final String[] COUNTRIES = new String[] { 
     "NEWS1", "NEWS2","RADIO"}; 
Intent intent; 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, COUNTRIES)); 

     ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 

     lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
if (((TextView) view).getText().equals("NEWS1")){ 
intent = new Intent(start.this, NewsActivity.class); 

¿Cómo puedo agregar un menú con una acción. por favor dame un ejemplo. gracias

+0

Tab-menú o el menú como en cuando se pulsa el botón Menú en el teléfono? –

+0

Botón de menú en el teléfono –

Respuesta

6

Ya está bien si usted no tiene un archivo XML en su actividad principal. Puede agregarle un menú siguiendo estos pasos ->

  1. crear un archivo XML de Android y seleccionar el menú como tipo (Se almacenará en la sub carpeta del menú de la carpeta res).
  2. En su código principal actividad Añadir estos dos métodos ->

    public boolean onCreateOptionsMenu(Menu menu){ 
        getMenuInflater().inflate(R.menu.yourmenuxmlfilename, menu); 
        return true; 
    } 
    public boolean onOptionsItemSelected(MenuItem item){ 
        switch(item.getItemId){ 
         case R.id.item1: 
          // what you want to do with first button 
          break; 
         case ..... 
          break; 
        } 
        return true; 
    } 
    
+0

este método onCreateOptionsMenu (Menú menú) desde donde necesito llamarlo (¿a partir de qué método llamarlo?) ??? y cómo agregar elementos al menú? –

+0

simplemente agregue este método a su clase de inicio pero recuerde que no agregue este método dentro de su método onCreate(), agréguelos por separado. Y vaya al menú XML file para agregarle elementos. Es muy simple. – Rocker

+0

gracias, pero los artículos son negros. No puedo verlos en la fuente negra en un fondo negro. –

35

utilizar este código para añadir dinámicamente menú

private static final int NEW_MENU_ID=Menu.FIRST+1; 

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 

     menu.add(0, NEW_MENU_ID, 0, "New"); 

     return true; 
    } 
+0

¿De qué sirve el método 'public boolean onPrepareOptionsMenu (Menu menu)' aquí? Quitarlo no muestra ninguna diferencia. –

1

Para un menú contextual que acaba de añadir

  getListView().setOnCreateContextMenuListener(new OnCreateContextMenuListener() { 

       @Override 
       public void onCreateContextMenu(ContextMenu menu, View v, 
         ContextMenuInfo menuInfo) { 

        menu.setHeaderTitle("Options"); 
        menu.add("Option1"); 
        menu.add("Option2"); 
        menu.add("Option3"); 

       } 
      }); 

El menú contextual solo aparece en mucho haga clic en el lista el elemento

-1

Para el menú de opciones

crear un archivo XML androide que se infla en el menú de opciones

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    new MenuInflater(this).inflate(R.layout.options, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    //and your action for menu item click goes here 
-1

Cómo abrir el diálogo entonces? ex. cuando hace clic en Acerca de, se abre el diálogo que dice: Hecho por XXX, font16 y visita: "http://www.xxx.xxx" como hipervínculo?

.con este código:

private static final int NEW_MENU_ID=Menu.FIRST+1; 


@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 

     menu.add(0, NEW_MENU_ID, 0, "ABOUT"); 


     return true; 
    } 
Cuestiones relacionadas