getActionView () de mon MenuItem renvoie null
Je voudrais juste modifier la vue D'un MenuItem ActionBar par code.
Malheureusement, il semble que getActionView retourne toujours null!
Mon code:
@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());
Le journal est:
01-11 22:13:42.884: I / (7893): * onPrepareOptionsMenu *COM.actionbarsherlock.interne.vue.menu.MenuItemWrapper@41401ac8
01-11 22:13:42.884: Je/(7893): * getActionView * null
Merci beaucoup pour toute aide
Modifier:
<?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>
4 réponses
getActionView()
ne fonctionne que s'il y a un actionView personnalisé à partir de setActionView
.
Vous devriez utiliser
app:actionLayout="@layout/menu_actionbar_basket"
C'est l'astuce si vous utilisez
android:actionLayout="@layout/menu_actionbar_basket"
Vous obtiendrez toujours une exception null dans la barre d'outils par défaut.
Pour moi la solution qui a fonctionné, c'est d'utiliser app espace de noms au lieu d'android.
app:actionViewClass="android.support.v7.widget.SearchView"
N'oubliez pas de le déclarer:
xmlns:app="http://schemas.android.com/apk/res-auto"
Si votre build de débogage fonctionne sans aucun problème et que le problème ne concerne que la version release, cela peut être dû à la configuration proguard. Si vous avez activé proguard dans votre application ajoutez la ligne ci dessous à proguard-rules.pro
-keep class android.support.v7.widget.SearchView { *; }