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(..)
。也许我会发布另一个问题,如果我