2012-04-23 28 views
19

He estado tratando de agregar un botón al SherlockActionBar pero no puedo hacerlo funcionar.Agregando un botón a la barra de acciones con ActionBarSherlock

Este es el código que tengo:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     android.view.MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, (android.view.Menu) menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

Ésta es mi menu.xml código:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/save_button" 
      android:title="i" 
      android:showAsAction="always" /> 
</menu> 

Esto no funciona, ya que incluso si se presiona el botón de menú y no aparece nada . ¿Hay alguna otra manera? ¿Estoy cometiendo algún error?

Respuesta

38

está usando el menú y MenuInflater de Android, pero debe utilizar las clases que vienen con ActionBarSherlock:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.menu, (com.actionbarsherlock.view.Menu) menu); 
    return super.onCreateOptionsMenu(menu); 
} 

Parece como si los dos se entremezclan en este momento. Asegúrese de importar solo com.actionbarsherlock.view.Menu y com.actionbarsherlock.view.MenuInflater, y no sus contrapartes de Android. Te recomiendo que hagas algo como lo siguiente:

import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 

... 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 
+0

esto funciona fantásticamente, pero, ¿es posible tener el botón en todas mis actividades y fragmentos en la aplicación? – noloman

+0

Sí. Realice una actividad base que contenga el onCreateOptionsMenu (...) anterior. A continuación, amplíe esta actividad en las actividades en las que desea que la barra de acciones sea visible. – hanspeide

+0

¡Gracias por la gran solución! – ASP

19

Creo que en el menú.xml. Su artículo no declara el atributo android: showAsAction por completo. Debe declarar así:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/save_button" 
      android:title="i" 
      android:showAsAction="always|withText" /> 
</menu> 

Dado que no se ha especificado ningún icono de la barra de acción del elemento no puede mostrar cualquier artículo. Por defecto, el ícono es pantalla que texto.

Si esta publicación lo ayuda, marque esto como una respuesta.

Gracias.

+1

¡gracias! ¡Exaclty estaba mirando! ps remove spaces ("always | withText") – Paschalis

+0

usando tanto la respuesta aceptada (por hanspeide) como esta respuesta, obtuve el resultado final de tener una barra de acciones con un ícono en ella. Gracias ! – Muzikant

Cuestiones relacionadas