今天为安卓应用增加了菜单,放了三个选项,都是关于版本和版权信息的,但是点击任何一项都没反应:

看了看代码,onOptionsItemSelected 也没什么问题,那原因在哪呢?
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.version_info:
//...
return true;
case R.id.copyright_notice:
//...
return true;
case R.id.app_update:
//...
return true;
default:
return super.onOptionsItemSelected(item);
}
}
想起了前一阵子一个发现的一个类似的问题:Fragment 中的 onCreateOptionsMenu 方法不执行,
点击打开链接
得到了启发,于是查了查这个类的代码,果然没有调用
setHasOptionsMenu(true) ,于是,在onCreate()方法中进行调用:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}然后重新运行,点击菜单就能正常响应了:

总结一下,关于应用菜单的一些问题,多半都是由于缺乏一些配置文件或者代码层面的设置造成的,可以从这个反面考虑入手解决。
本文讲述了开发者在为安卓应用添加菜单后遇到点击无响应的问题,通过检查代码发现缺少了对setHasOptionsMenu(true)的调用,从而导致菜单无法正常工作。在onCreate()方法中加入该调用后,菜单功能恢复正常。总结了应用菜单问题通常由配置或代码设置错误引起,并提醒开发者从这些方面着手排查。

4580

被折叠的 条评论
为什么被折叠?



