在onOptionsItemSelected中......我看到了一些在switch块中不同的代码.
案例1(通常看到)
public boolean onOptionsItemSelected (MenueItem item)
switch (item.getItemId()){
case R.id.item1:
startActivity (new Intent (this, PrefsActivity.class));
break;
}
return true
Run Code Online (Sandbox Code Playgroud)
案例2(不确定为什么这样设置)
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_NEW_GAME:
newGame();
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
我的问题
案例1和案例2之间有什么区别?
Wil*_*ate 52
kleaver,
返回
boolean返回false以允许正常菜单处理继续,true在此处使用它.
如果返回true,则onOptionsItemSelect()调用将使用click事件,并且不会通过其他项目单击函数.如果您返回false,则可以在其他项目选择功能中检查事件的ID.
您的方法仍然有效,但可能会导致对其他函数的不必要调用.ID最终将通过这些函数掉落,因为没有切换来捕获它,但返回false更正确.
Lok*_*ari 36
根据文档
真实 - >事件消耗在这里,现在它不应转发其他事件
false - >转发其他事件消耗
当我们处理多个片段并且每个片段都有自己的Options菜单并覆盖OnOptionItemSelected(主要是在平板电脑设计中)时,这种布尔返回类型实际上是有益的.
在这种情况下,android跟踪每个片段的OnOptionItemSelected()方法,以避免这种情况
a)如果任何片段在onOptionsItemSelected()中消耗事件,则返回"true"(停止),否则返回"false"
b)如果我们返回false则它将跟踪其他连接片段的onOptionsItemSelected()
方法,直到它结束所有片段或某人消耗它.
这里我试图从图解释
绿色边界是片段-1和红色边界是片段-2
两个片段都有自己的Optionmenu我已经突出显示
现在如果我们点击任何OptionmenuItem它将检查onOptionsItemSelected()的实现片段
如果任何片段正在消耗事件onOptionsItemSelected返回true,那么它将永远不会尝试其他片段,我们可以减少Android操作系统的开销.
| 归档时间: |
|
| 查看次数: |
59490 次 |
| 最近记录: |