首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有常用工具栏和BaseActivity活动的menuItems无法捕获onMenuItemClick

带有常用工具栏和BaseActivity活动的menuItems无法捕获onMenuItemClick
EN

Stack Overflow用户
提问于 2017-04-09 19:30:27
回答 1查看 389关注 0票数 0

我有一个基本活动,其中所有工具栏初始化和选项菜单都已完成,扩展基的活动不能单点单击

在基地我有

代码语言:javascript
运行
复制
public class BaseActivity extends AppCompatActivity {

private MenuItem refresh;

public Toolbar getToolbar() {
  return toolbar;
}

public MenuItem getRefresh() {
  return refresh;
} 

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.menu_main, menu);
  refresh = menu.findItem(R.id.action_refresh);
  refresh.setActionView(R.layout.menu_item_view);
  return true;
}

@Override
  public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
    case android.R.id.home:
      onBackPressed();
      break;
  }
  return false;
}

 @Override
  public boolean onPrepareOptionsMenu(Menu menu) {

switch (mState) {
  case Const.STATE_IDLE:
    refresh.setVisible(true);
    break;
  case STATE_WORKING:
    refresh.setVisible(false);
    break;
  default:  
    refresh.setVisible(true);
    break;
}

return super.onPrepareOptionsMenu(menu);
}
}

在其中一个活动中,我处理它就像

代码语言:javascript
运行
复制
       public class CommentsActivity extends BaseToolbarActivity
        {
         @Override
         public boolean onCreateOptionsMenu(Menu menu) {
         super.onCreateOptionsMenu(menu);
         return true;
         }
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
          super.onOptionsItemSelected(item);
          if(item.getItemId() == R.id.action_refresh){
            setState(Const.STATE_WORKING);
            showMsg(contentRoot,"oops");
           return true;
          }
          return super.onOptionsItemSelected(item);
        }
      }

,但单击项不会触发

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-22 22:35:50

过了一段时间,我意识到,由于我正在为我的项目设置自定义布局(对于动画有用),一个带有自定义视图的选项菜单,可以在xml中设置,也可以动态地使用

代码语言:javascript
运行
复制
 item.setActionView(R.layout.menu_lay);

就像我上面的问题一样,菜单项永远不能被普通的onOptionsItemSelected侦听器调用,因此使其工作的方法是在项目的自定义视图上实现onClickListener,所以在我的示例中,使其调用的方式是

代码语言:javascript
运行
复制
        @Override
          public boolean onCreateOptionsMenu(Menu menu) {
            getRefresh.getActionView().setOnClickListener(new OnClickListener(){
               @Override
               public void onClick(View v) {   
                //refresh some data
               }
           });
        return true;
       } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43310974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档