Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OnPrepareOptions功能表,带有溢出时的操作栏单击_Android_Android Fragments_Android Actionbar_Android Menu - Fatal编程技术网

Android OnPrepareOptions功能表,带有溢出时的操作栏单击

Android OnPrepareOptions功能表,带有溢出时的操作栏单击,android,android-fragments,android-actionbar,android-menu,Android,Android Fragments,Android Actionbar,Android Menu,我希望在用户每次单击溢出菜单按钮(3点)时调用onPrepareOptionsMenu。据我所知,在HC+设备上,菜单被视为始终显示,因此只有在第一次调用onprepareOptions功能表时,或者在调用invalidatementUoptions后,才会调用该功能表。我的问题是,如何在溢出按钮单击时调用无效选项?这是在片段中,该片段位于ActionBarCompat ActionBarActivity中。您只需从如下片段调用InvalidateOptions菜单: getActivity()

我希望在用户每次单击溢出菜单按钮(3点)时调用
onPrepareOptionsMenu
。据我所知,在HC+设备上,菜单被视为始终显示,因此只有在第一次调用
onprepareOptions功能表时,或者在调用
invalidatementUoptions
后,才会调用该功能表。我的问题是,如何在溢出按钮单击时调用
无效选项
?这是在
片段
中,该片段位于
ActionBarCompat ActionBarActivity
中。您只需从如下片段调用InvalidateOptions菜单:

getActivity().invalidateOptionsMenu();
但是我不确定如果你在点击溢出按钮时调用它会发生什么。这很有可能会扰乱ActionBar的行为,可能不值得您花时间来完成这项工作


还必须考虑到并非所有的设备都以这种方式实际显示溢出菜单。例如,所有带有菜单按钮的设备——就像三星和许多旧设备一样——根本不显示溢出菜单按钮。因此,您可能应该重新考虑,并尝试以其他方式解决您的问题。

答案的第二部分回答了我的大部分问题。也许我的问题不清楚,但更多的是我应该在哪里调用
invalidateOptionsMenu()
(我如何知道何时单击了溢出按钮)?我不太确定这是否那么容易,正如我已经提到的,在很多设备上实现这一点可能也很困难。对于带有菜单按钮的设备,我想您可以覆盖onKeyDown,但我不确定这是否有效。但对于在actionbar中显示溢出菜单的设备来说,它肯定不起作用。我认为最好的解决方案是搜索一个替代方案,它不涉及对用户按下菜单按钮或溢出菜单按钮的反应。捕获菜单按钮在onKeyDown中工作。菜单按钮的关键代码是KeyEvent.KEYCODE\u menu。我在考虑这个问题。那会抓住溢出按钮吗?我没有机会测试它。如果需要,我会重新考虑,但同时我只是改变了我的逻辑,不需要这个。很可能不需要。如果我有机会测试一下,我会让你知道的。既然你已经改变了你的逻辑,不需要这个,我建议你坚持下去。