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

Alf*_*mes 5 java eclipse android menu

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

  • 我该怎么回事?为什么?

谢谢

Mad*_*han 12

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

文档.

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

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

MenuItem menu1 = new MenuItem(this);
menu1.setIntent(myIntent);
Run Code Online (Sandbox Code Playgroud)

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

在你的onOptionsItemSelected()回调中,你可以检查文本视图的值,如果文本视图不为空则返回false(你在文本框中有东西,你可以触发Intent到GMail)否则显示一个消息框说"请键入a消息首先"并返回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;
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这有助于...快乐编码.


Tom*_*Mor 5

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