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