在 android 中,当我在 xml 中定义 menuitem 的 onclick 处理程序时
<item
android:id="@+id/context_menu"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/word_context_menu_title"
android:onClick="deleteItem"/>
在相应的活动中,我定义了一个具有以下签名的函数deleteItem。
public boolean deleteItem(MenuItem item){
logger.info("delete button clicked");
return false;
}
我的问题是返回值意味着什么?什么情况下应该返回 true,什么情况下应该返回 false?
什么是boolean
返回值是指来自文档单击菜单项时 http://developer.android.com/reference/android/view/MenuItem.OnMenuItemClickListener.html:
返回 true 来消耗这次点击并阻止其他人执行。
如此类似的行为onOptionsItemSelected
与答案here https://stackoverflow.com/a/5719356/3286163。如果我理解正确的话,这意味着每当你成功处理该事件时,你应该返回true
.
这是一个例子。
说你有你的deleteItem
并且onOptionsItemSelected
.
public boolean deleteItem(MenuItem item){
Log.v("test", "delete button clicked");
return false;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case R.id.context_menu:
Log.v("test","onOptionsItemSelected");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
如果你回来false
in deleteItem
你会看到它也被处理在onOptionsItemSelected
.
>点击删除按钮
>onOptionsItemSelected 选项
如果你回来true
in deleteItem
它将不再被处理onOptionsItemSelected
.
>点击删除按钮
另请注意,您的deleteItem
句柄可以是void
方法,根据源代码它会自动返回 truehere http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.2_r1/android/support/v7/internal/view/SupportMenuInflater.java#SupportMenuInflater.InflatedOnMenuItemClickListener.onMenuItemClick%28android.view.MenuItem%29.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)