Подтвердить что ты не робот

GetActionView() моего MenuItem возвращает null

Я просто хотел бы настроить вид элемента ActionBar MenuItem по коду.

К сожалению, кажется, что getActionView всегда возвращает null!

Мой код:

@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());

Журнал:

01-11 22: 13: 42.884: I/(7893): * onPrepareOptionsMenu *[email protected]8

01-11 22: 13: 42.884: I/(7893): * getActionView * null

Большое спасибо за любую помощь

Edit:

<?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>
4b9b3361

Ответ 1

getActionView() работает только в том случае, если пользовательский actionView из setActionView.

Ответ 2

Для меня решение, которое сработало, это использовать пространство имен app вместо android.

app:actionViewClass="android.support.v7.widget.SearchView"

Не забудьте объявить об этом: xmlns:app="http://schemas.android.com/apk/res-auto"

Ответ 3

вы должны использовать

app:actionLayout="@layout/menu_actionbar_basket"

вот трюк если вы используете

android:actionLayout="@layout/menu_actionbar_basket"

вы всегда получите пустое исключение в панели инструментов по умолчанию.

Ответ 4

Если ваша сборка отладки работает без каких-либо проблем, а проблема связана только с сборкой релиза, это может быть связано с конфигурацией proguard. Если вы включили proguard в своем приложении, добавьте строку ниже в proguard-rules.pro

-keep class android.support.v7.widget.SearchView { *; }