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 - 当我点击菜单按钮时调用哪个方法的主要内容,如果未能解决你的问题,请参考以下文章

当用户点击屏幕上的任意位置时调用函数

在导航控制器中单击后退按钮时调用哪个方法?

完成按钮单击时调用 UITextField 方法

当我按手机上的返回键时调用哪种方法?

从后台调用应用程序时调用方法

Unity Raycast UI按钮并在点击事件时调用它[重复]