从ActionBar获取项目视图

时间:2013-02-13 14:47:43

标签: android actionbarsherlock activity-lifecycle android-inflate

我有一个ActionBarSherlock,我的栏中有一个菜单项。当我打电话的时候 活动按钮View item = findViewById(R.id.my_item);中的onClick都可以正常工作。 但是,当我尝试在onCreateonResume或甚至onPostResume中执行此操作时,始终为null。我在尝试从资源中提取菜单后尝试在onCreateOptionsMenu(Menu menu)中执行此操作,但没有任何成功。

因此,我无法理解动作栏项目何时创建以及如何抓住这一时刻?

3 个答案:

答案 0 :(得分:2)

如前所述[{3}}和heregetActionView会返回我们在setActionView中设置的视图。因此,自定义操作栏菜单项的唯一方法是here

答案 1 :(得分:1)

实际上可以获取操作项的视图,即使它不是自定义的。

然而,请注意有时候动作项会出现在溢出菜单中,所以你可能会得到一个null。

所以,你怎么能这样做?

这是一个示例代码:

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);
      ...

在Android 4.1.2和android 2.3.5上使用actionBarSherlock库时进行了测试。

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

答案 2 :(得分:0)

首先获得如下菜单参考:

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

之后,您可以获得所需的项目,如下所示

     customMenu.getItem(0);