item - create action bar android studio
getActionView() de mi MenuItem devuelve nulo (4)
Deberías usar
app:actionLayout="@layout/menu_actionbar_basket"
ese es el truco si usa
android:actionLayout="@layout/menu_actionbar_basket"
siempre obtendría una excepción nula en la barra de herramientas predeterminada.
Solo me gustaría modificar la Vista de un elemento de menú ActionBar por código.
Desafortunadamente, parece que getActionView siempre devuelve null!
Mi código:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
inflater.inflate(R.menu.folder, menu);
return super.onCreateOptionsMenu(menu);
}
public boolean onPrepareOptionsMenu(final Menu menu) {
MenuItem menuFolder = menu.findItem(R.id.menu_folder);
Log.i("", "* onPrepareOptionsMenu *" + menuFolder);
Log.i("", "* getActionView *" + menuFolder.getActionView());
Log es:
01-11 22: 13: 42.884: I / (7893): * onPrepareOptionsMenu *com.actionbarsherlock.internal.view.menu.MenuItemWrapper@41401ac8
01-11 22: 13: 42.884: I / (7893): * getActionView * null
Muchas gracias por cualquier ayuda
Editar:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_folder"
android:icon="@drawable/ic_menu_archive"
android:showAsAction="always"/>
</menu>
Para mí, la solución que funcionó es utilizar el espacio de nombres de la aplicación en lugar de Android.
app:actionViewClass="android.support.v7.widget.SearchView"
No olvides declararlo: xmlns:app="http://schemas.android.com/apk/res-auto"
Si su compilación de depuración está funcionando sin problemas y el problema es solo con la versión de lanzamiento, esto puede deberse a la configuración proguard. Si ha habilitado Proguard en su aplicación, agregue la siguiente línea a proguard-rules.pro
-keep class android.support.v7.widget.SearchView { *; }
getActionView()
solo funciona si hay una actionView personalizada de setActionView
.