2011-06-28 38 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