Double callbacks onMenuOpened/onPanelClosed on each menu button press

烈酒焚心 提交于 2019-12-08 19:30:03

问题


In my Android app I want to collect statistics on when (how often) the overflow (three dots) action bar menu is opened and closed (without an item being selected). For this task I have overriden onMenuOpened and onPanelClosed methods within an Activity. However, on all the devices (Android 4.4, 4.2; Samsung and HTC) I've tried this so far these methods are triggered twice, each time the menu is opened and closed. Is this a bug? Is there another way to monitor this menu opening and closing?


回答1:


you can try this...i have tested it ....it works perfect....

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    Activity activity = getActivity();
    activity.getActionBar().addOnMenuVisibilityListener(new OnMenuVisibilityListener() {
    @Override
        public void onMenuVisibilityChanged(boolean isVisible) {
            // TODO Auto-generated method stub
            //you can check the isVisible boolean to check
            // if the overFlowMenu is visible or not
        }
    });



回答2:


I got the same question as you, and find an easier way to solve it:

When the first time it enters onMenuOpened(), menu is null. The menu is not prepared yet. So, you can check as below

@Override
public boolean onMenuOpened(int featureId, Menu menu){
    if(menu!=null){
       //log something like firebaseLogEvent("Action", "onMenuOpened");
    }
    return true;

}



回答3:


Discovered a better solution

    public boolean onPrepareOptionsMenu(Menu menu) {
      if (hasWindowFocus ()) {
        // gets called every time user taps on menu
        Log.v(TAG, "onPrepareOptionsMenu - focus");
      } else {
        // gets called when menu is being initialized
        Log.v(TAG, "onPrepareOptionsMenu - NO FOCUS");
      }
      return super.onPrepareOptionsMenu(menu);
    }

You can collect you stats in the "focus" part of the If statement.



来源:https://stackoverflow.com/questions/23859826/double-callbacks-onmenuopened-onpanelclosed-on-each-menu-button-press

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!