我看到可以处理图标菜单项上的水龙头或通过实施
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
,其中,根据上述选项,根据Activity
到Activity
关系的预实现,假定使用哪个Fragment
。关于android - 单击图标菜单项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15008874/