在我的Android应用程序中,我想收集关于溢出(三个点)操作栏菜单何时(多久)打开和关闭(没有选择项目)的统计数据。对于此任务,我在onMenuOpened
内覆盖了onPanelClosed
和Activity
方法。但是,在所有设备(Android 4.4,4.2;三星和HTC)上,到目前为止,我已尝试过这两种方法,每次打开和关闭菜单时都会触发这两种方法。
这是一个错误吗?是否有其他方法可以监控此菜单的打开和关闭?
答案 0 :(得分:6)
你可以尝试这个...我已经测试过了......它的工作完美......
@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
}
});
答案 1 :(得分:4)
我和你有同样的问题,并找到一种更简单的解决方法:
第一次进入onMenuOpened()时,菜单为空。菜单尚未准备好。所以,你可以查看如下
@Override
public boolean onMenuOpened(int featureId, Menu menu){
if(menu!=null){
//log something like firebaseLogEvent("Action", "onMenuOpened");
}
return true;
}
答案 2 :(得分: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语句的“焦点”部分收集统计信息。