我正在尝试从菜单选项关闭“活动”。当菜单项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);
}
我不明白您的活动未完成的原因。它应该。您可以添加一些日志吗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.
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)