7

在我的 Android 应用程序中,我想收集有关何时(多久)打开和关闭溢出(三个点)操作栏菜单(未选择项目)的统计信息。onMenuOpened对于这个任务,我已经覆盖onPanelClosedActivity. 但是,到目前为止,在所有设备(Android 4.4、4.2;三星和 HTC)上,这些方法都会触发两次,每次打开和关闭菜单时。这是一个错误吗?还有其他方法可以监视此菜单的打开和关闭吗?

4

3 回答 3

8

你可以试试这个……我已经测试过了……效果很好……

@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
        }
    });
于 2014-08-04T10:57:48.200 回答
4

我遇到了和你一样的问题,想找一个更简单的方法来解决它:

第一次进入 onMenuOpened() 时,menu 为空。菜单还没准备好。所以,你可以检查如下

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

}
于 2018-01-12T08:08:26.710 回答
0

发现了更好的解决方案

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

您可以在 If 语句的“焦点”部分收集统计信息。

于 2014-12-02T07:51:22.010 回答