2

У меня есть ActionBarSherlock с одним элементом меню в моей панели. Когда я звоню View item = findViewById(R.id.my_item); в действии кнопки onClick все работает нормально, как ожидалось. Но когда я пытаюсь сделать это в onCreate или onResume или даже в onPostResume, это всегда null. Я также попытался сделать это в onCreateOptionsMenu(Menu menu) после раздувания моего меню с ресурса, но без каких-либо успехов.Получить вид товара из ActionBar

Поэтому я не могу понять, когда создаются элементы панели действий и как поймать этот момент?

+0

Пробовали ли вы следующее onCreateOptionsMenu (меню Menu) View myView = menu.findItem (R.id.my_menu_id) .getActionView(); –

+0

@GauravArora да, я пытаюсь, но getActionView возвращает null –

ответ

2

Как уже было сказано here и here, getActionView возвращает вид, который мы устанавливаем в setActionView. Таким образом, единственный способ настроить пункт меню панели действий, описанный here

+0

Вы правы, я полагаю, что предположил, что вы уже используете setActionView(). Извини за это. –

+0

Я не знал, что здесь есть три ** здесь ** s в нашем мире ... :) – Mohammad

1

Фактически можно получить представление о действии, даже если оно не настроено.

Однако обратите внимание, что иногда элементы действия попадают внутрь меню переполнения, поэтому вместо этого вы можете получить нуль.

поэтому, как вы можете это сделать?

вот пример кода:

public boolean onCreateOptionsMenu(final Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.main, menu); 
    new Handler().post(new Runnable() { 
    @Override 
    public void run() { 
     final View syncItemView = findViewById(R.id.action_search); 
     ... 

это была протестирована при использовании библиотеки ActionBarSherlock на андроид 4.1.2 и Android 2.3.5.

другой альтернативой является использование более обширного способа, используемого на showcaseView library, here.

+0

Неработающая ссылка на место в showcaseView library (( –

+1

@SteelFedeX К сожалению, так работает Github. Вам нужно найти класс ShowcaseView там Я снова обновил ссылку. Надеюсь, что сейчас это работает. –

0

первую очередь получить ссылку меню, как показано ниже:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.custom_menu, menu); 
    customMenu = menu; 
    return super.onCreateOptionsMenu(menu); 
} 

после этого вы можете получить нужный вам пункт, как показано ниже

 customMenu.getItem(0); 
Смежные вопросы