我可以创建一个类,它可以作为每种类型的Activity的父级吗?

jam*_*mes 1 java inheritance android

我希望有一个课程,我的所有Activity课程都延伸.我有ListActivities,Activities,MapActivities,TabActivities,等我的应用程序.

我的应用程序中有很多这些不同的活动,~12个活动.我希望他们每个人都拥有父类中的方法.

现在,我已经建立根据其类型,其是从一定的活动延伸4父活动类(ListActivity,Activity,MapActivity,TabActivity)

我正在创建大量冗余代码 - 4个父活动中的每一个都具有几乎相同的代码,但它扩展的类活动除外.

这是一个可以澄清我的问题的例子:

  • 我有一个Activity:MenuScreen延伸BaseListActivity
  • BaseListActivity 扩展 ListActivity
  • BaseListActivity 包含我希望我的所有活动都可以访问的方法和字段

  • 我有另一个Activity:HomeScreen延伸BaseActivity

  • BaseActivity 扩展 Activity
  • BaseActivity包含与我的其他Base[<type>]Activity类相同的方法和字段(例如BaseListActivity)

这些方法/字段被复制粘贴到我的所有Base[<type>]Activity,并且对我来说似乎非常多余.

我可以创建一个主活动类,所有类型的Activity类都可以用作其父类吗?如果没有,我是否坚持使用副本并粘贴此代码并感觉粗暴/肮脏?

Com*_*are 5

我可以创建一个主活动类,所有类型的Activity类都可以用作其父类吗?

不,对不起

如果没有,我是否坚持使用副本并粘贴此代码并感觉粗暴/肮脏?

首先,你不需要ListActivityTabActivity.你不需要ListActivityListView; 你不需要TabActivity一个TabHost.将事情归结为两个基类:ActivityMapActivity.不幸的是,您确实需要扩展MapActivity使用MapView.

为此,您可以使用合成来最小化冗余.而不是你的"我希望我的所有活动都可以访问的方法和字段"在活动上实现,而是在其他对象上实现它们,并拥有BaseActivityBaseMapActivity保持该对象的实例.您仍然需要一些重复的代码(例如,对于生命周期方法等onStop()),但更多的东西可以放在一个类中.