android - 必须 onCreateOptionsMenu 成为每个活动的实现吗?
问题描述
当我有一个包含多个活动的应用程序并希望有一个全面的选项菜单时:我是否必须在每个活动中覆盖 onCreateOptionsMenu 方法? 或者这可以成为中心化的吗?
解决方案
您可以防止样板代码创建所有活动都继承的通用活动。
abstract class CommonSaveActivity : Activity() {
@CallSuper
override fun onCreateOptionsMenu(menu: Menu): Boolean {
super.onCreateOptionsMenu(menu)
menuInflater.inflate(R.menu.common_save_action_menu, menu)
return true
}
@CallSuper
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.saveAction -> {
// TODO: handle common save action
true
}
else -> super.onOptionsItemSelected(item)
}
}
}
class ActivityA : CommonSaveActivity()
class ActivityB : CommonSaveActivity()
class ActivityC : CommonSaveActivity() {
// You can have the common save menu AND your
// activity specific menu at the same time in UI.
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// NOTE: if you call super.onCreateOptionsMenu(menu) AFTER
// menuInflater.infalte(..) line, then the order of menu
// items will be different.
super.onCreateOptionsMenu(menu)
menuInflater.inflate(R.menu.activity_c_menu, menu)
return true
}
推荐阅读
- python - 如何在 Django 管理面板的 modelAdmin 中仅显示日期时间字段中的日期?
- python - 验证 JSON 中的多个节点?
- linux - 我错误地做了一个命令
- cordova - IOS 的 Cordova 工具需要 Apple macOS
- regex - String.replace 函数返回非字符串输出
- php - 检查数据库的值,同时创建一个 foreach 循环复选框
- metpy - Stationplot barbs 因 AttributeError 而失败:“list”对象没有属性“shape”
- reactjs - 如何将 toMatchSnapshot 与酶一起使用,因此结果类似于带有 react-testing-library 的 container.firstChil
- java - Java 日历没有得到正确的星期几
- java - 为什么在 Effective Java 中推荐使用静态方法?