繁体   English   中英

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

[英]How do I “extend” PreferenceActivity class in Android with my “base” class?

情况是这样的:我正在使用具有一些标准功能(如标准菜单生成器)的“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 活动中的相同功能时出现问题,当 class 必须“扩展” PreferenceActivity 而不是标准活动时。 我该如何更好地处理它? 我已经阅读了有关“实现与扩展”行为之类的内容,但我在 OOP 中没有足够的经验来处理这个问题并找到最佳解决方案。 从 Base 到 Prefs class 的 C&P-ing 东西,它扩展了 PreferenceActivity 似乎可以解决问题,但肯定是最糟糕的解决方案。

提前感谢你的帮助!

您可能想要创建一个PreferenceBaseActivity class,它扩展了PreferencesActivity 从这里,您有几个选择:

  1. BaseActivity重新实现相同的方法(不是最佳的)。
  2. 将 BaseActivity 中的方法拉入ActivityHelper BaseActivity ,并使您的BaseActivityPreferencesBaseActivity都包含对帮助程序的引用。 这样您就可以将您的工作从您的基本活动委托给ActivityHelper

考虑将您的可重用方法放在帮助程序 class 中,并向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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM