0

我正试图抓住我的ActionBar中导航按钮的点击事件。这种方法捕获点击:当SearchView可见时,如何侦听ActionBar导航按钮的点击事件?

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    if (menuItem.getItemId() == android.R.id.home) { 
     // Nav button pressed. Do stuff here. 
     return true; 
    } 

    return super.onOptionsItemSelected(menuItem); 
} 

然而,当我SearchView可见它不叫。在这种状态下,点击按钮关闭SearchView。点击它再次触发上面的回调。

这对我来说还不够好。我的活动(从ActionBarActivity延伸)专门用于搜索,所以关闭SearchView没有任何意义。我只想在第一次点击时导航用户。 (请没有关于UX或意见,“为什么”,我想改变默认的行为。我有一个规范的遵循!)提前

谢谢...

回答

1

要知道,当用户关闭了SearchView即可检查菜单项何时折叠:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 

    MenuItemCompat.setOnActionExpandListener(menu.findItem(R.id.search_view), new MenuItemCompat.OnActionExpandListener() { 
     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      //The SearchView is opening 
      return true; 
     } 

     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      //The SearchView is closing. Do stuff here. 
      return true; 
     } 
    }); 

    return true; 
} 
相关问题