我正在尝试关闭“从菜单中调用”选项。当选择menuItem menu_close_activity
时(和调试时),我注意到调试器总是从返回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);
}
答案 0 :(得分:0)
我没有看到你活动未完成的原因。这应该。您是否可以向onDestroy()
方法添加一些日志,并看到它被调用。
至于Debugger
跳跃的原因,在这种情况下,不要相信调试器。我认为它会因为不同线程中发生的不同事情而跳跃。而是添加一些日志以查看实际发生的情况。用以下内容替换您的代码并检查日志。
@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;
Log.d("DEBUG","BEFORE FINISH = "+item.toString());
setResult(1);
finish(); // Compiler jumps from here
Log.d("DEBUG","AFTER FINISH = "+item.toString());
return true;
default:
Log.d("DEBUG","DEFAULT STATEMENT = "+item.toString());
return super.onOptionsItemSelected(item); // Compiler jumps to here.
}
}