2015-12-10 1 views
0

Я пытаюсь получить View из MenuItem.MenuItemCompat.getActionView (menuItem) возвращает null

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    View miView = MenuItemCompat.getActionView(item); 

    if (miView == null) { 
     Log.e(X, "mView is null"); 
    } 
} 

но каждый раз miView is null.

Вот мой onCreateOptionsMenu

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(0, 0, 0, R.string.Foo); 
    return true; 
} 

Я знаю, что MenuItemCompat возвращает нуль, поскольку созданный Menu не из support библиотеки, поэтому MenuItem не может быть обработан MenuItemCompat класса, не является?

1) Я ищу какой-либо метод, например onCreateOptionsMenuCompat, есть ли какой-либо метод? 2) Как я могу получить ActionView от класса MenuItemCompat?

И что я делаю неправильно?

PS: minSdkVersion моего проекта составляет 9

ответ

1

Чтобы получить ActionView из пункта меню, вам нужно будет установить ActionView на него первым. Нормальные пункты меню не поставляются с ActionViews. ActionViews используются, когда вам нужно сделать что-то лишнее в вашем меню (вне нормального значка и/или текста).

Почему вы пытаетесь получить представление из пункта меню? Что вы пытаетесь сделать с вашим пунктом меню?

+0

Я хочу создать 'ContextMenu' на' MenuItem', поэтому мне нужно 'View'. есть ли другой способ получить 'View' из' MenuItem'? – theapache64

+0

Вы можете вручную показать контекстное меню, вызвав 'openContextMenu()' в своей деятельности. Вы можете вызвать этот метод в методе 'onOptionsItemSelected()'. Вам все равно необходимо реализовать другие обратные вызовы контекстного меню (например, 'onCreateContextMenu') – cstew