代码之家  ›  专栏  ›  技术社区  ›  james

我可以创建一个类来作为每种活动的父类吗?

  •  1
  • james  · 技术社区  · 15 年前

    我希望有一个单一的班级 Activity 类扩展。我有 ListActivities , Activities , MapActivities , TabActivities 等在我的应用程序中。

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

    现在,我已经创建了4个父活动类,这些类根据其类型从某个活动扩展而来。( ListActivity , 活动 , MapActivity , TabActivity )

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

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

    • 我有一个 活动 : MenuScreen 延伸 BaseListActivity
    • 基列表活动 延伸 响度
    • 基列表活动 包含我希望所有活动都可以访问的方法和字段

    • 我还有另外一个 活动 : HomeScreen 延伸 BaseActivity

    • 基本活动 延伸 活动
    • 基本活动 包含与我的其他方法和字段相同的方法和字段 Base[<type>]Activity 类(如 基列表活动 )

    这些方法/字段被复制粘贴到 基本活动 对我来说似乎是多余的。

    我可以创建一个所有类型的活动类都可以用作其父级的主活动类吗?如果没有,我是不是一直在复制和粘贴这段代码,并且对它感到恶心/肮脏?

    2 回复  |  直到 15 年前
        1
  •  5
  •   CommonsWare    15 年前

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

    不,对不起。

    如果没有,我是不是一直在复制和粘贴这段代码,并且对它感到恶心/肮脏?

    首先,你不需要 ListActivity TabActivity . 你不需要 响度 对于一个 ListView ;你不需要 表活性 对于一个 TabHost . 这将事情分为两个基本类: Activity MapActivity . 不幸的是,你 需要扩展 地图活动 使用 MapView .

    为此,您可以使用组合来最小化冗余。而不是你的“我希望我所有的活动都能访问的方法和字段”正在活动上实现,在其他对象上实现它们,并且 BaseActivity BaseMapActivity 抓住那个对象的一个实例。您仍然需要一些重复的代码(例如,对于生命周期方法,如 onStop() 但是在一个类中可以找到更多的东西。

        2
  •  1
  •   Zsombor Erdődy-Nagy    15 年前

    我只需要抛弃它们,创建一个名为baseActivity的类来扩展Activity类,并拥有所有冗余的代码部分。然后,所有的活动都应该扩展baseactivity。