【问题标题】:How do I create common code for parts of Android activities?如何为部分 Android 活动创建通用代码?
【发布时间】:2011-02-01 18:52:53
【问题描述】:

在我的应用程序中有 14 个活动。在这 9 个活动中,包含自定义标题栏和选项卡窗格。所以在这里我需要在一个地方编写这个通用代码,而不是在每个包含自定义标题栏和选项卡窗格代码的活动中编写冗余代码(即布局和它的活动特定代码)

有哪些可能的方法来做到这一点?

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    常见的方式是:

    • 创建一个名为CommonActivity 的超类,它扩展了Activity
    • 将样板代码放入该类中
    • 然后让你的活动扩展CommonActivity而不是Activity

    这里是一个简单的例子:

    public class CommonActivity extends Activity{
        public void onCreate(Bundle b){
            super.onCreate(b);
            // code that is repeated
        }
    
        protected void moreRepeatitiveCode(){
        }
    }
    

    还有你目前的活动:

    public class AnActivity extends CommonActivity{
        public void onCreate(Bundle b){
            super.onCreate(b);
            // specific code
        }
    }
    

    【讨论】:

    • 别忘了在函数体中加上super.onCreate(b),不然编译器会不爽。
    • 很好,保罗。好吧,如果忘记了 super.onCreate(b),编译器不会抱怨,这是完全合法的,但这是必要的,因为您要执行超类的样板代码。
    • 虽然跳过对超级方法的调用是合法的,但如果你不使用activity类的生命周期方法,它会在运行时失败。
    • @PaulLammertsma super.onCreate(b) 做什么?
    【解决方案2】:

    嗯.. 通用代码并不总是需要在 Activity 类中,而只是在常规类中。比我们可以根据需要调用这些方法引用公共代码类。

    我对这个example 说得对吗?

    当然,如果我们像 Activity 一样需要它,如果我们处理好 Activity 生命周期并且不要忘记将其添加到清单文件中,上述建议将完美运行>.

    一般情况下,Activity 应该只创建 UI、处理事件发生并将业务逻辑和/或其他操作委托给我们应用中的其他组件。

    干杯

    【讨论】: