【问题标题】:Can I put onCreateOptionsMenu in another activity?我可以将 onCreateOptionsMenu 放在另一个活动中吗?
【发布时间】:2014-09-02 14:54:13
【问题描述】:

我现在正在创建一个应用程序。我是初学者,我对我的 MainActivity 感到焦虑。我相信它太大了,有些东西没有必要放在里面。我不确定在新活动中可以安全使用什么。

我要分开的一件事是:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

是否可以在单独的类中使用此选项菜单设置(用于操作栏)?

谢谢

【问题讨论】:

    标签: android android-activity android-actionbar


    【解决方案1】:

    onCreateOptionsMenu 是来自Activity 类的方法,它是它的内在部分,如果你把它放在不同的Activity 上,你将不会得到你想要的结果。相反,您将拥有没有 Menu 的 Main Activity,并且只有当您膨胀第二个 Activity 时,您才会找到您的 Menu

    简单地说,onCreateOptionsMenu 链接到声明它的Activity。如果您想将方法移动到不同的类,我建议移动不属于 Activity 生命周期的方法

    【讨论】:

    • 谢谢。请问,map.setOnMyLocationButtonClickListener 是活动生命周期的一部分吗? (因此无法分开)它与位置按钮有关,该按钮带有在 onCreate 中创建的地图片段。所以我认为是的?
    • 如果你使用MapFragment你实际上可以为它创建一个新类,有初始化地图的方法,设置和更新它,只需从你的主活动中调用.
    【解决方案2】:

    您不能将onCreateOptionsMenu 保留在其他活动中。

    如果您觉得您的活动文件太大,这意味着您的活动正在做不应该做的事情。

    尝试将多余的代码从活动中剥离到UtilitiesHelper 类中。

    【讨论】:

      【解决方案3】:

      我想这是可能的,但您仍然需要覆盖 OnCreateOptionsMenu,因此您的 Activity 大小不会有太大变化。它可以使您的代码更易于阅读,因为一切都在单独的类中,但它不会使您的活动在所使用的数据的意义上变得不那么“大”。我个人不会尝试分离OnCreateOptionsMenu,因为它是Activity 的一部分,如果你想显示它,你总是需要覆盖OnCreateOptionsMenu 函数。尝试在 Activity 中隔离非 Activity 特定的大函数,以便您可以在代码的其他地方重用它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多