2011-06-11 72 views
1

我正在学习如何为Android应用程序创建选项菜单。Android上的DRY选项菜单

在它具有以下尖端保持干爽与菜单中的guide

提示:如果您的应用程序包含 多种活动,其中一些 提供相同的选项菜单, 考虑创建一个活动,除了 onCreateOptionsMenu()和 onOptionsItemSelected()方法外, 什么也没有实现。然后 扩展这个类为每个活动 应该共享相同的选项 菜单。这样,您必须管理 只有一组代码用于处理菜单 操作,并且每个后代类 都继承了菜单行为。

这看起来有问题。如果需要共享相同选项的Activity从不同的类继承,那么我的OptionsMenuActivity应该继承什么?我读过Java不支持多重继承,那么你如何解决这个问题?

回答

3

具有选项菜单代码的活动应扩展Activity类。

public class YourRootActivity extends Activity { 

// Any other stuff that you want for all activities 

public boolean onCreateOptionsMenu(Menu menu){ 
// your main options menu 
} 
} 

现在为了需要这个菜单的类,让它们扩展我们上面创建的活动。

class Activity1 extends YourRootActivity { 
} 

如果你想在子类的选项菜单稍作修改,就可以覆盖在这些类的onCreateOptionsMenu方法。

+0

我明白这个方法。但是,如果Activity1扩展了Activity,Activity2扩展了其他一些类,我该怎么办? – user94154 2011-06-11 05:29:44

+0

Activity2不能扩展另一个类。如果您定义了Activity的子类,那么您必须扩展Activity或Activity的子类。 Achie的答案是好的 – 2011-06-11 05:35:54

+0

这是Java的一个缺点,它可以在大多数情况下通过仔细实现类并使用接口来实现这些情况来解决。但在我们的例子中,因为我们不想编写所有Android的Activity类,所以我们必须做出折衷。在上述情况下,我们可能需要扩展TabActivity或MapsActivity。在那些和其他类似的情况下,我们将不得不在相应的活动中再次实现选项菜单代码。 – achie 2011-06-11 05:44:26