我在我的Activity中使用了这样的公共代码:
abstract class CommonCode extends Activity {
//Common Code here...
}
然后在我的“Activity”中我扩展了CommonCode而不是Activity,它一切正常。
当我尝试在PreferenceActivity中使用commoncode时出现问题,我试过了:
abstract class CommonCode extends Activity {
class CommonCodePreferences extends PreferenceActivity {
}
//Common Code here...
}
但是不对。
我该怎么做?
答案 0 :(得分:3)
我可以建议您更喜欢构图而不是继承,并执行以下操作:
abstract class CommonCode {
Activity parent;
public CommonCode(Activity activity) {
parent = activity;
}
}
class MyActivity extends Activity {
CommonCode commonCode;
public MyActivity() {
commonCode = new CommonCode(this);
}
}
这是在每个活动中编写的更多代码,但它有很多优点:
答案 1 :(得分:2)
我通常都有一个,因为你不能搞乱基类的现有层次结构。
例如,我有一个ActivityBase,ServiceBase,ListActivityBase等。如果你想拥有他们都使用的公共代码,我建议使用组合 - 你的每个基类都有一个CommonCode类的实例或者其他东西为此。另一种可能性是使用静态方法和/或使用自定义Application类(需要在应用程序元素的name属性中的清单中声明自定义Application类)