2012-01-17 19 views
1

我使用的是通用的代碼在我的活動是這樣的:常用代碼,活動和PreferenceActivity

abstract class CommonCode extends Activity { 
    //Common Code here... 
} 

然後在我的「活動」我延長​​CommonCode,而不是活動,這一切工作正常。

當我嘗試在PreferenceActivity使用commoncode出現我的問題,我想:

abstract class CommonCode extends Activity { 

    class CommonCodePreferences extends PreferenceActivity { 

    } 
    //Common Code here... 
} 

,但它是不正確的。

我該怎麼辦?

回答

2

我通常都有一個,因爲你不能混淆基類的現有層次結構。例如,我有一個ActivityBase,ServiceBase,ListActivityBase等。如果你想擁有它們都使用的通用代碼,我會建議使用組合 - 每個基類都有一個你的CommonCode類的實例,或者有這樣的結果。另一種可能是使用靜態方法和/或使用自定義應用程序類(需要在應用程序元素的name屬性中的清單中聲明自定義應用程序類)

3

我可以建議您更喜歡構圖而不是繼承,像這樣:

abstract class CommonCode { 

    Activity parent; 

    public CommonCode(Activity activity) { 
    parent = activity; 
    } 

} 

class MyActivity extends Activity { 

    CommonCode commonCode; 

    public MyActivity() { 
     commonCode = new CommonCode(this); 
    } 

} 

這一點更多的代碼在每次活動都寫,但它有很多的優點:

  • 它也可以很容易地處理PreferenceActivity和其它類
  • 它更容易測試和模擬