如何使用我的“基础”类“扩展”Android中的PreferenceActivity类?

时间:2011-06-28 14:21:21

标签: java android

情况是这样的:我使用“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似乎解决了这个问题,但肯定是最糟糕的解决方案。

预先感谢您的协助!

2 个答案:

答案 0 :(得分:4)

您可能希望创建一个PreferenceBaseActivity类,该类扩展PreferencesActivity。从这里,您有几个选择:

  1. BaseActivity重新实现相同的方法(非最佳)。
  2. 将方法从BaseActivity拉入ActivityHelper课程,让BaseActivityPreferencesBaseActivity包含对帮助者的引用。这样,您可以将工作从基础活动委派给ActivityHelper

答案 1 :(得分:1)

考虑将可重用的方法放在帮助器类中,并向BasePrefs添加实例:

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
}