2011-06-28 17 views
4

的情况是这样的:我使用“BaseClass的”与一些标准功能(如标准菜单生成器)和所有其他活动“扩展”它得到相同的菜单和其他的东西:如何在Android中使用“base”类“扩展”PreferenceActivity类?

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. 

问题出现在我想在首选项活动中使用相同功能时,此类必须“扩展”PreferenceActivity而不是标准活动。我如何更好地处理这个问题?我已经阅读了“implements vs extends”行为和类似的东西,但我在OOP方面还不是很有经验,无法解决这个问题并找到最佳解决方案。从基础到Prefs类P-ing东西,它扩展了PreferenceActivity似乎解决了这个问题,但它肯定是最糟糕的解决方案。

在此先感谢您的帮助!

回答

3

你可能会想创建一个PreferenceBaseActivity类,它扩展PreferencesActivity。从这里,你有几个选项:

  1. 要么从BaseActivity(不是最优)重新实现相同的方法。
  2. 将方法从BaseActivity转换为ActivityHelper类,并且您的BaseActivityPreferencesBaseActivity都包含对助手的引用。这样,您可以将您的工作从您的基本活动委托给ActivityHelper
+0

谢谢,我通过HelperClass完成 - 它确实工作,但实际上现在菜单我正试图构建失败与未捕获的异常,如果从助手类:( – Nick

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 
} 
+0

感谢,它确实工作,但实际上现在的菜单我试图构建失败与未捕获的异常,如果从帮助器类运行:( – Nick