您好我有相当复杂的应用程序需要子类化"活动","服务"和#34; FragmentActivity"在Android中(但这个问题在纯Java中仍然有效)
这三个类中的每一个都在" My Layer"中扩展了一组实用程序。例如显示Toast的特定方式或处理配置或读取磁盘上文件的特定方式等。
现在我为所有3种类型创建了一个共同的接口(MyUtilities),例如。
public class MyActivity extends Activity implements MyUtilities
public class MyFragmentActivity extends FragmentActivity implements MyUtilities
public class MyService extends Service implements MyUtilities
public class MyActivity1 extends MyActivity
public class MyFragmentActivity1 extends MyFragmentActivity
public class MyService1 extends MyService
但这使我最终复制并粘贴所有3个类的常用方法,因为我无法在界面中定义字段和方法。有没有更好的方法呢?从长远来看,复制代码非常容易出错。
我查看了抽象类,但在这种情况下不确定如何使用它们。理想情况下我需要它"双延伸"像
public class MyActivity extends Activity, MyUtilities
这显然是不允许的,但可以解决我的问题。
想法好吗?
谢谢!
PS:我已经尽可能在常见类上使用静态方法
根据要求,这是一个简单的例子。 3个对象中的每一个都需要能够支持配置字段,每个对象包含以下
private Configuration config
public Configuration getConfiguration(){return config;}
public void setConfiguration(Configuration cfg){this.config=cfg;}
使用界面有助于要求方法存在,但我仍然需要复制和粘贴我不太喜欢的代码。
答案 0 :(得分:0)
看看这种方法:
我们的想法是创建一个Custom Activity
类,它将扩展Activity
并实现MyUtilities
接口。这样,Android图层就会将您的自定义类理解为活动,将您的图层理解为MyActivity以及MyUtilities
。
public class CustomActivity extends Activity implements MyUtilities {
private Configuration config
public Configuration getConfiguration(){return config;}
public void setConfiguration(Configuration cfg){this.config=cfg;}
}
Android Layer会将班级MyActivity
的实例理解为Activity
。
您的图层会将MyActivity
类的实例理解为CustomActivity
以及MyUtilities。
public class MyActivity extends CustomActivity {
}
希望这有帮助!