2012-01-17 6 views
1

私はこのように私の活動に共通のコードを使用しています。共通コードとPreferenceActivity

abstract class CommonCode extends Activity { 

    class CommonCodePreferences extends PreferenceActivity { 

    } 
    //Common Code here... 
} 

を、それは適切ではない:私はPreferenceActivityでcommoncodeを使用しようとすると

私の問題が発生し、私が試してみました。

どうすればいいですか?

答えて

2

私は通常、基本クラスの既存の階層を混乱させることができないため、それぞれ1つずつ持っています。あなたは彼らのすべての使用は、私は、組成物を使用することをお勧めし共通のコードを持つようにしたい場合は

は、例えば、私はなどを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や他のクラス
  • を扱うことができます
  • テストや模擬が容易です
関連する問題