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