我希望有一个类,我的所有Activity
类都可以扩展。我的应用中有ListActivities
,Activities
,MapActivities
,TabActivities
等。
我的应用程序中有很多这些不同的活动,~12项活动。我希望他们每个人都拥有父类中的方法。
现在,我创建了4个父活动类,这些活动类根据其类型(ListActivity
,Activity
,MapActivity
,TabActivity
)<从某个活动进行了扩展/ p>
我正在创建大量冗余代码 - 4个父代活动中的每个代码都有几乎完全相同的代码,但它所扩展的类活动除外。
这是一个可以澄清我的问题的例子:
Activity
:MenuScreen
扩展了BaseListActivity
BaseListActivity
扩展ListActivity
BaseListActivity
包含我希望我的所有活动都可以访问的方法和字段
我有另一个Activity
:HomeScreen
延伸BaseActivity
BaseActivity
扩展Activity
BaseActivity
包含与我的其他Base[<type>]Activity
类相同的方法和字段(例如BaseListActivity
)这些方法/字段被复制粘贴到我的所有Base[<type>]Activity
,对我来说似乎非常多余。
我可以创建一个主活动类,所有类型的Activity类都可以用作其父类吗?如果没有,我是否坚持使用复制并粘贴此代码并感觉粗暴/肮脏?
答案 0 :(得分:5)
我可以创建一个主活动类,所有类型的Activity类都可以用作其父类吗?
不,抱歉。
如果没有,我是否坚持使用副本并粘贴此代码并对此感到粗暴/肮脏?
首先,您不需要ListActivity
或TabActivity
。对于ListActivity
,您不需要ListView
;对于TabActivity
,您不需要TabHost
。这将事情归结为两个基类:Activity
和MapActivity
。不幸的是,您做需要将MapActivity
扩展为使用MapView
。
为此,您可以使用合成来最小化冗余。而不是您在活动上实现的“我希望我的所有活动都可以访问的方法和字段”,而是在其他对象上实现它们,并让BaseActivity
和BaseMapActivity
保持在该实例上宾语。您仍然需要一些重复的代码(例如,对于onStop()
这样的生命周期方法),但更多的东西可以放在一个类中。
答案 1 :(得分:1)
是的,您可以创建一个包含所有冗余代码的主类。虽然问题是,你使用的是ListActivities,TabActivites等,它们只是便利类(它们扩展了Activity类并为你做了一些家务,但没有那么多)。
我只是抛弃它们,创建一个名为BaseActivity的类来扩展Activity类,并拥有所有冗余的代码部分。然后,您的所有活动都应扩展BaseActivity。