【问题标题】:Creating abstract Activity classes创建抽象 Activity 类
【发布时间】:2011-04-25 02:59:28
【问题描述】:

我正在为我的应用程序创建抽象活动类,我将为每个活动重复使用。

  1. 超类:android.app.Activity

  2. 我的抽象类扩展了 android.app.Activity 我的活动

  3. 我的应用程序中的示例活动扩展了 myActivity

我将拥有其中的 10-20 个 exampleActivity

如何编写抽象类 (#2) 以强制示例类覆盖 android.app.Activity 中的方法,例如 onCreate()onStart()

这在 Java 中可行吗?

【问题讨论】:

    标签: java android class android-activity abstract


    【解决方案1】:

    不是真的。

    但是您可以创建抽象函数 myOnCreate 和 myOnStart 并在 onCreate 和 onStart 的抽象类实现中调用它们。

    您可能还希望将 onCreate/onStart 设为 final,尽管很难看出强制使用 myOnCreate 而不是 onCreate 有什么好处。

    【讨论】:

    • 虽然这里介绍的技术很好,但我对这个答案中的“不是真的”有点困惑。您可以Activity 的抽象子类中将onCreate 等抽象化。也许这是一个坏主意(尤其是像 onBackPressed 这样的方法具有非空的默认实现,您可能想通过 super 调用)但它当然可以做到。
    【解决方案2】:

    这是可能的,

    public abstract class MyActivity extends android.app.Activity
    {
    
        public abstract void onCreat(...);
        public abstract void onStart(...);
    }
    
    public class OtherActivity extends MyActivity
    {
        public void onCreate(...)
        {
            //write your code
        }
    
        public void onStart(...)
        {
          //write your code
        }
    }
    

    【讨论】:

      【解决方案3】:

      没有。如果您需要强制其他人在其实现中覆盖,则使用 onCreate 和 onStart 方法创建接口会更优雅。

      并通过构造函数或设置器将接口实例传递给您的抽象活动类。

      【讨论】:

      • @user721378:我很想知道 Android Activity 是如何工作的。
      • 对不起,这是一个活动课。请忘记我所说的构造函数或设置器。您可以通过意图传递接口类名称,但这会使一切变得更加复杂。为什么不直接创建一个具有不同名称的抽象方法?
      猜你喜欢
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多