我花了数周时间为我正在构建的应用程序设计自定义 web 视图。我有一个扩展 android WebView 的类(我们称之为 myWebView)。我在 main.xml 中声明了 myWebView,就像您接受任何其他 UI 元素一样,我在 myWebView 前面加上了包名。一切都很好,花花公子。
在我的扩展类的所有功能都运行了数周之后,是时候实现一个选项菜单了。与我一直在做的事情相比,我认为这将是一项相对简单的任务。我覆盖了 onCreateOptionsMenu(),并试图从一个 xml 文件中扩充我的菜单。当我在模拟器中运行我的应用程序并按下菜单按钮时,什么也没发生。我的 onCreateOptionsMenu() 代码没有缺陷。我在一个虚拟活动中尝试了它,它有一个简单的 main.xml,只包含一个常规的 web 视图。菜单在虚拟活动中起作用。然后,我尝试了各种其他方式来填充菜单(使用 menu.add() 的不同实现),它们都在我的虚拟活动中工作,但它们在我的实际应用程序中不起作用。我从我的活动中删除了所有内容,除了 onCreate 和 onCreateOptionsMenu 中的内容,看看我的其他方法中是否有任何东西干扰了菜单的创建。那也一事无成。我将日志语句放入 onCreateOptionsMenu() 以查看该方法是否被调用。瞧,当我按下菜单按钮时,它并没有被调用。最后我进入我的 main.xml 并从布局中删除了 myWebView 的标签。之后,应用程序运行并且菜单工作。
因此,出于某种原因,使用我的自定义 Web 视图会阻止菜单工作。有没有其他人遇到过这个问题?我很难相信您不能使用带有自定义 ui 元素的选项菜单,因此必须有一些解决方法。相反,是否有人构建了自定义 webview 并成功实现了选项菜单,这意味着我必须去重新检查我的代码。如果有人认为它会有所帮助,我会提出我的代码,但我 99.99% 肯定一切都按照最佳实践正确编码,而且我的扩展类的代码非常庞大,需要大量清理。不过,根据我在这里所说的,有人有什么想法吗?