在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?
答案 0 :(得分:6)
boolean
返回值的含义来自onMenuItemClick的文档:
返回true以消耗此点击并阻止其他人执行。
与onOptionsItemSelected
的行为类似,回答为here。如果我理解正确,这意味着无论何时成功处理事件,都应该返回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
中返回deleteItem
,则会看到它也会在onOptionsItemSelected
中处理。
&gt;点击删除按钮
&GT; onOptionsItemSelected
如果您在true
中退回deleteItem
,将无法再在onOptionsItemSelected
中处理。
&gt;点击删除按钮
另请注意,您的deleteItem
句柄可以是void
方法,并且会根据源代码here自动返回true。