【问题标题】:Is there any way to insert a custom class in an existing inheritance tree?有没有办法在现有的继承树中插入自定义类?
【发布时间】:2011-08-25 17:18:55
【问题描述】:

我正在开发一个 Android 应用程序,该应用程序当前有两个活动 A 和 B,它们有一些共同的代码、它们的选项菜单和一些其他代码。为了减少复制和粘贴,我创建了一个名为 BaseActivity 的类来扩展 Activity,然后我让 A 和 B 扩展 BaseActivity。至少那是我想做的,但我遇到了问题。虽然 A 现在可以很好地扩展 BaseActivity,但我不知道如何让 B 扩展 BaseActivity,因为它不仅仅是一个活动,它是一个 MapActivity。所以它的继承树是这样的:

MapActivity 继承树:

java.lang.Object
   android.content.Context
       android.content.ContextWrapper
           android.view.ContextThemeWrapper
               android.app.Activity
                   com.google.android.maps.MapActivity

但为了让它继承我的代码,我需要让它看起来像这样:

java.lang.Object
   android.content.Context
       android.content.ContextWrapper
           android.view.ContextThemeWrapper
               android.app.Activity
                  mypackage.BaseActivity
                     com.google.android.maps.MapActivity

有什么方法可以将我的自定义类插入到继承树中?

【问题讨论】:

    标签: java android


    【解决方案1】:

    不,你不能。很难确切地说出最好的方法是什么,但我至少会尝试使用组合而不是继承。你能实现一个单独的非活动对象并使用 A 和 B 中的一个吗?

    【讨论】:

    • 他确实应该使用组合并在单独的类中创建共享 UI 和相关内容。然后,一个活动可以拥有该特定功能的成员。更简单、更清洁的方法。
    【解决方案2】:

    既然您的代码实际上是一个 MapActivity,它应该扩展它(假设您不想进行组合)。如果您想进行组合,请让您的类具有对 MapActivity 的引用,这将允许您与该类进行交互。

    【讨论】:

      猜你喜欢
      • 2010-09-11
      • 2016-11-21
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      相关资源
      最近更新 更多