活动和偏好活动的通用代码

时间:2012-01-17 14:41:07

标签: android class

我在我的Activity中使用了这样的公共代码:

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

然后在我的“Activity”中我扩展了CommonCode而不是Activity,它一切正常。

当我尝试在PreferenceActivity中使用commoncode时出现问题,我试过了:

abstract class CommonCode extends Activity {

    class CommonCodePreferences extends PreferenceActivity {

    }
    //Common Code here...
}

但是不对。

我该怎么做?

2 个答案:

答案 0 :(得分: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和其他类
  • 更容易测试和模拟

答案 1 :(得分:2)

我通常都有一个,因为你不能搞乱基类的现有层次结构。

例如,我有一个ActivityBase,ServiceBase,ListActivityBase等。如果你想拥有他们都使用的公共代码,我建议使用组合 - 你的每个基类都有一个CommonCode类的实例或者其他东西为此。另一种可能性是使用静态方法和/或使用自定义Application类(需要在应用程序元素的name属性中的清单中声明自定义Application类)