onOptionsItemSelected not called when using actionLayout (SherlockActionBar)

前端 未结 6 1101
误落风尘
误落风尘 2020-12-01 07:39

The method onOptionsItemSelected isn\'t being called when using actionLayout in a menu item. Am I missing something, or is it a known problem with SherlockActionBar?

6条回答
  •  臣服心动
    2020-12-01 07:43

    Combining @Arun Kumar's and @Luten's answers, the below method will make the implementation generic. For all the menu items using actionView, we setOnClickListener to call onOptionsItemSelected(item). This way we can mix and match normal and actionLayout menu items, without worrying about setting individual onClickListeners.

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        menu.clear();
        inflater.inflate(menuResourceId(), menu);
    
        for (int i = 0; i < menu.size(); i++) {
            final MenuItem item = menu.getItem(i);
            View actionView = MenuItemCompat.getActionView(item);
            if (actionView != null) {
                actionView.setOnClickListener(new View.OnClickListener(){
                    @Override
                    public void onClick(View v){
                        onOptionsItemSelected(item);
                    }
                });
            }
        }
    
        super.onCreateOptionsMenu(menu, inflater);
    }
    

提交回复
热议问题