情况是这样的:我使用“BaseClass”和一些标准功能(如标准菜单生成器),所有其他活动“扩展”它以获得相同的菜单和其他东西:
public class Base extends Activity {
//some stuff
}
然后
public class MainActivity extends Base {
//some other stuff
}
public class AdditionalActivity extends Base {
//some other stuff x2
}
// etc.
当我需要在Preferences活动中使用相同的功能时,问题就出现了,因为类必须“扩展”PreferenceActivity而不是标准的。我该如何更好地处理这个问题?我已经阅读过关于“实现与扩展”的行为以及类似的事情,但我在OOP中没有很多经验来处理并找到最佳解决方案。从Base到Prefs类的C& P-ing东西,它扩展了PreferenceActivity似乎解决了这个问题,但肯定是最糟糕的解决方案。
预先感谢您的协助!
答案 0 :(得分:4)
您可能希望创建一个PreferenceBaseActivity
类,该类扩展PreferencesActivity
。从这里,您有几个选择:
BaseActivity
重新实现相同的方法(非最佳)。BaseActivity
拉入ActivityHelper
课程,让BaseActivity
和PreferencesBaseActivity
包含对帮助者的引用。这样,您可以将工作从基础活动委派给ActivityHelper
。答案 1 :(得分:1)
考虑将可重用的方法放在帮助器类中,并向Base
和Prefs
添加实例:
public class Base extends Activity { // same with Prefs
private Helper helper;
public Base() {
// .. super calls, etc
this.helper = new Helper(this);
}
}
public class Helper {
private Activity parent;
public Helper(Activity parent) {
this.parent = parent;
}
// your methods. If you need to call methods from Activity, use
// the parent reference
}