我看到可以处理图标菜单项上的水龙头或通过实施

onOptionsItemSelected


在主动性内,或通过使用

onMenuItemClickListener


就像按钮上的onclick侦听器。何时最好使用拳头一种方法,何时使用第二种方法?
因为我的观点是,使用外部侦听器可以使代码更具模块化,但是可以创建新类,但是使用第一种方法可以创建新类,但是可以减少代码的模块化...

最佳答案

除了下面列出的用例以外,还有一些用例,但我会定期介绍一些一般用例。

onOptionsItemSelected

如果使用的是Fragment,则可能要使用onOptionsItemSelected,并考虑按照Adding items to the Action Bar中所述的方式将菜单项添加到操作栏中。

这描述的是在Fragment中实现onCreateOptionsMenu。为此,必须在onCreate中调用setHasOptionsMenu

protected void onCreate(Bundle savedInstanceState) {
    this.setHasOptionsMenu(true);
}


设置此项实际上将使Activity调用onCreateOptionsMenu允许您添加菜单项。

@Override
public boolean onCreateOptionsMenu(Menu menu){
    super.onCreateOptionsMenu(menu);

    // add items corresponding to this Fragment
    menu.add(...);

    return true;
}


我之所以建议这样做,是因为它允许您将更多菜单处理代码放入Fragment中,而不是将Activity弄清楚要调用哪个Fragment,等等。

在这种情况下,单击菜单项将在我建议的onOptionsItemSelected内部调用Fragment

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.my_id1:
            dothing1();
            return true;
        case R.id.my_id2:
            dotghing2();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}


答案很长,但这是处理Fragment内部菜单单击的方法。

onMenuItemClickListener

对于onMenuItemClickListener,当您不想使用上面的pre-ready方法并实现自己的方法时,将使用此方法。

我的意思是,您实现OnMenuItemClickListener并在接口中生成方法。然后,您分配菜单以调用实现此功能的Activity,其中,根据上述选项,根据ActivityActivity关系的预实现,假定使用哪个Fragment

关于android - 单击图标菜单项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15008874/

10-14 10:16
查看更多