2

我有一个ActionBarSherlock,其中有一个菜单项在我的栏中。当我打电话 View item = findViewById(R.id.my_item);在活动的按钮onClick所有工作正常。 但是,当我尝试在onCreateonResume或甚至在onPostResume中这样做时,它始终是null。我也尝试在onCreateOptionsMenu(Menu menu)之后从资源中增加我的菜单,但没有任何成功。从ActionBar获取项目视图

因此,我无法理解何时创建操作栏项目以及如何捕捉此时刻?

+0

你尝试在onCreateOptionsMenu以下(菜单菜单)查看myView = menu.findItem(R.id.my_menu_id).getActionView(); – 2013-02-13 14:55:11

+0

@GauravArora是的,我尝试了,但getActionView返回null – 2013-02-14 06:15:21

回答

2

如前所述herehere,getActionView返回我们在setActionView中设置的视图。因此,唯一一种自定义操作栏菜单项的方法here

+0

你是对的,我相信我认为你已经在使用setActionView()。对于那个很抱歉。 – 2013-02-14 16:35:24

+0

我不知道这里有三个** **在我们的世界... :) – Mohammad 2016-01-26 16:27:28

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库时,在Android 4.1.2和Android 2.3.5测试。

另一种选择是使用更广泛的方式,在showcaseView libraryhere上使用。

+0

断开的链接,以放置在showcaseView库(( – 2016-01-29 01:08:04

+1

@SteelFedeX)可悲的是,这就是Github的工作原理,您需要在那里找到ShowcaseView类我再次更新了链接,希望它现在可以运行。 – 2016-01-29 07:29:31

0

首先是得到如下菜单参考:后

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

你可以得到你需要的项目如下

 customMenu.getItem(0);