【发布时间】:2015-10-30 04:51:08
【问题描述】:
我正在尝试从菜单选项关闭活动。当 menuItem menu_close_activity 被选中时,(并且在调试时)我注意到调试器总是从 return true 步骤跳转到默认值。
我尝试使用ActivityClassName.this.finish(),但仍然得到相同的结果
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_xxxx:
break;
case R.id.menu_yyyy:
break;
case R.id.close_activiy:
// doing some stuff here;
setResult(0001);
finish(); // Debugger jumps from here
return true;
default:
return super.onOptionsItemSelected(item); // Debugger jumps to here.
}
}
为什么我要跳转到默认值,而不是返回 true?
除了这个方法,public boolean onCreateOptionsMenu(Menu menu) 什么都不做,只是增加了选项菜单,protected void onCreate(Bundle savedInstanceState)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_name_list);
Bundle b = getIntent().getExtras();
name = b.getString("name");
setTitle("Students of " + name);
}
【问题讨论】:
-
编译器还是调试器?
-
你能发布你的全班吗?可能是返回语句的问题。尝试休息。
-
为什么
R.id.menu_log_out不在 switch case 条件下?R.id.close_activiy是什么?这是菜单项吗? -
小心使用 0001 作为数字 - 它将被解释为八进制 - 请参阅:stackoverflow.com/questions/8254077/…