android - 当我点击菜单按钮时调用哪个方法
Posted
技术标签:
【中文标题】android - 当我点击菜单按钮时调用哪个方法【英文标题】:android - Which method is called when I click on Menu button 【发布时间】:2013-11-22 15:10:38 【问题描述】:如果我点击右上角的菜单按钮(下拉menu.xml 中定义的所有菜单),会调用哪个方法?显然,onCreateOptionsMenu 仅在创建活动 UI 期间被调用。
我在菜单扩展期间收到跳帧的编舞警报,这就是为什么我需要知道 - android - Skipped frames message from Choreographer
public class MainActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
public boolean onCreateOptionsMenu(Menu menu)
Log.d("check","accessed");
getMenuInflater().inflate(R.menu.main, menu);
return true;
当我点击这个时:
【问题讨论】:
显然不是因为 Log.d("check","accessed");只执行一次(在创建线程期间) 【参考方案1】:以下方法被调用:
@Override
public boolean onOptionsItemSelected(MenuItem item)
return super.onOptionsItemSelected(item);
【讨论】:
我认为当我选择一个选项时会调用 onOptionsItemSelected 。但我需要知道如果我只是单击下拉所有选项的菜单图标(不是任何选项),那么调用哪个方法? 好吧抱歉检查这个方法 public boolean onMenuItemActionExpand(MenuItem item) 谢谢,方法名称表明它应该是那个。但是在我的整个活动课中,我没有这个方法,但我的菜单仍然有效!如何?我在菜单扩展期间收到跳帧的编舞警报,这就是我需要知道这一点的原因。 ***.com/questions/20143861/… 此方法有助于检测菜单是否展开。它与您的菜单工作无关。 但我的全班都没有定义这个方法!! frm 它来自哪里?是内部的吗?【参考方案2】:您可能会得到答案,但如果有人需要,我会发布此答案。我最近遇到了这个问题,然后用这种方法解决了。每当您单击该方法调用的菜单图标时,此方法实际上做了什么。
@Override
public boolean onMenuOpened(int featureId, Menu menu)
return super.onMenuOpened(featureId, menu);
【讨论】:
以上是关于android - 当我点击菜单按钮时调用哪个方法的主要内容,如果未能解决你的问题,请参考以下文章