2014-09-02 52 views
0

我正在创建一个应用程序。我是初学者,我很担心我的MainActivity。我认为它太大了,有些事情没有必要在那里。我不确定我可以在新活动中安全使用哪些内容。我可以在另一项活动中放置CreateOptionsMenu吗?

有一件事我要分开是这样的:

@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); 
} 

是否有可能在一个单独的类(操作栏)这个选项菜单设置?

谢谢

回答

0

onCreateOptionsMenu是从Activity类的方法,它是它的一个内在的部分,如果你把它放在不同的Activity你不会得到你想要的结果。相反,如果你膨胀第二个Activity,你将会拥有主要活动没有Menu,你会发现你的Menu

简而言之,onCreateOptionsMenu链接到它声明的Activity。如果你想移动方法到不同的类,我建议移动不属于Activity生命周期的方法

+0

谢谢。我可以问一下,map.setOnMyLocationButtonClickListener是活动生命周期的一部分吗? (因此无法分开),它与onCreate中创建的地图片段相关的位置按钮。所以我认为是的? – user2974706 2014-09-02 15:03:30

+0

如果您正在使用MapFragment,您可以为其创建一个新类,那么可以使用这些方法来初始化地图,设置并更新它,并且只需从主活动调用。 – 2014-09-02 15:06:02

0

我想这是可能的,但你还是要重写OnCreateOptionsMenu,所以它不会改变你的Activity尺寸太大。它可以使你的代码更易于阅读,因为所有的东西都在单独的类中,但不会让你的活动在使用数据的意义上变得更“小”。我个人不会尝试单独使用OnCreateOptionsMenu,因为它是Activity的一部分,如果要显示它,您将始终需要覆盖OnCreateOptionsMenu函数。尝试隔离Activity中的大函数,这不是Activity特定的,因此您可以在代码中的其他地方重复使用它们。

0

您不能在另一个活动中保留onCreateOptionsMenu

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

尝试从活动中去除多余代码为UtilitiesHelper类。

相关问题