onOptionsItemSelected()应返回什么,true或false?

时间:2012-08-12 10:17:29

标签: java android eclipse menu

我正在学习菜单inflater,我正在关注的教程说我们应该在这个函数中返回false。但是,当我返回true时,我没有发现任何变化或差异。所以问题是:

  • 我应该归还什么?为什么?

由于

2 个答案:

答案 0 :(得分:12)

如果要进行正常处理,请返回false。否则,返回true。

请参阅Documentation

默认情况下,当您返回false时,Android会调用与该项关联的Runnable,或者运行您可以使用MenuItem上的setIntent(...)设置的Intent。如果您不希望发生这种情况,则应返回true。

假设您按如下方式创建MenuItem。

MenuItem menu1 = new MenuItem(this);
menu1.setIntent(myIntent);

此处myIntent是您在单击菜单项时要执行的操作。例如:假设您的菜单项启动GMail应用程序以发送电子邮件,文本在您的活动的文本视图中。

onOptionsItemSelected()回调中,您可以检查文本视图的值,如果文本视图不为空,则返回false(文本框中有内容,您可以触发Intent到GMail)否则会显示一个消息框,上面写着“请先输入消息”并返回true,这样Android就不会触发Intent。

public boolean onOptionsItemSelected (MenuItem item) {
    if (textView.getText().trim().equals("")){
        // show the message dialog
        return true;
    }
    else {
        // we have some message. We can let android know that
        // it is safe to fire the intent.
        return false;
    }
}

希望这会有所帮助...... 快乐的编码。

答案 1 :(得分:4)

如果你处理事件返回true,否则返回false