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

Java 我可以创建一个类作为每种类型活动的父类吗?,java,android,inheritance,Java,Android,Inheritance,我希望有一个单独的类,我所有的活动类都可以扩展。我的应用程序中有列表活动,活动,地图活动,选项卡活动,等等 我的应用程序中有许多不同的活动,~12个活动。我希望它们每个都有父类中的方法 现在,我已经创建了4个父活动类,它们根据类型从特定活动扩展而来(ListActivity,activity,MapActivity,TabActivity) 我正在创建大量冗余代码——4个父活动中的每一个都有几乎相同的代码,除了它扩展的类活动 以下是一个可以澄清我的问题的示例: 我有一个Activity:Men

我希望有一个单独的类,我所有的
活动
类都可以扩展。我的应用程序中有
列表活动
活动
地图活动
选项卡活动
,等等

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

现在,我已经创建了4个父活动类,它们根据类型从特定活动扩展而来(
ListActivity
activity
MapActivity
TabActivity

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

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

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

  • 我还有另一个
    活动
    主屏幕
    ,它扩展了
    基本活动

  • BaseActivity
    扩展
    Activity
  • BaseActivity
    包含与我的其他
    Base[]Activity
    类中相同的方法和字段(例如
    BaseListActivity
这些方法/字段被复制粘贴到我所有的
Base[]Activity
,对我来说似乎是多余的


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

是的,您可以创建一个包含所有冗余代码的主类。尽管问题是,您使用的是ListActivities、TabActivities等,它们只是方便类(它们扩展了Activity类并为您做了一些家务,但并没有那么多)


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

是的,您可以创建一个主类,该类包含所有冗余代码。尽管问题是,您使用的是ListActivities、TabActivities等,它们只是方便类(它们扩展了Activity类并为您做了一些家务,但并没有那么多)

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

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

不,对不起

如果不是的话,我是不是一直在复制和粘贴这些代码,并为此感到恶心/肮脏

首先,您不需要
ListActivity
TabActivity
。对于
列表视图
,您不需要
列表活动
;对于
TabHost
,您不需要
TabActivity
。这将事情分解为两个基本类:
Activity
MapActivity
。不幸的是,您确实需要扩展
MapActivity
才能使用
MapView

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

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

不,对不起

如果不是的话,我是不是一直在复制和粘贴这些代码,并为此感到恶心/肮脏

首先,您不需要
ListActivity
TabActivity
。对于
列表视图
,您不需要
列表活动
;对于
TabHost
,您不需要
TabActivity
。这将事情分解为两个基本类:
Activity
MapActivity
。不幸的是,您确实需要扩展
MapActivity
才能使用
MapView


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

好的,谢谢。我的印象是,对于包含/实现了
ListView
的活动,我必须扩展
ListActivity
。我想这会给我带来更多的问题,比如如何在一个不扩展
ListActivity
Activity中
setListAdapter(..)
。如果我遇到麻烦,也许我会发布另一个问题,但我想我知道该怎么做do@binnyb:调用
findViewById()
获取
列表视图
,然后调用
列表视图
上的
setAdapter()
,以替换
setlistapter()
。好的,谢谢。我的印象是,对于包含/实现了
ListView
的活动,我必须扩展
ListActivity
。我想这会给我带来更多的问题,比如如何在一个不扩展
ListActivity
Activity中
setListAdapter(..)
。也许我会发布另一个问题,如果我