猿问

android如何创建自己的Activity并进行扩展?

我需要创建一个扩展的基类,该基类可以Activity在应用程序中执行一些常见任务,并通过以下形式扩展我的活动

公共BaseActivity扩展了活动{....}

公共SubActivity扩展了BaseActivity {...}

SubActivity中,我需要给在BaseActivity中定义的一些变量和UI组件赋值,我可能需要根据一些标志值为SubActivity定义不同的布局,也(在SubActivity中)我想执行在BaseActivity中定义的asyncTask

这可能吗?如果是,是否有任何教程可以帮助您?先感谢您


婷婷同学_
浏览 427回答 3
3回答

扬帆大鱼

您到底想达到什么目的?除了某些变量或布局的某些部分以外,是否有两个具有共同ui的不同活动?在这种情况下,我建议您有一个基本的抽象活动和两个具体的继承子类。您定义基本活动中的所有常见行为,并具有区别的抽象方法,然后在实际实现中将其覆盖。例如,对于具有不同布局资源的两个活动:public abstract class BaseActivity extends Activity {    @Override    public void onCreate(bundle) {        super.onCreate(bundle);        setContentView(getLayoutResourceId());    }    protected abstract int getLayoutResourceId();}public class Activity1 extends BaseActivity {    @Override    public void onCreate(bundle) {        super.onCreate(bundle);        // do extra stuff on your resources, using findViewById on your layout_for_activity1    }    @Override    protected int getLayoutResourceId() {        return R.layout.layout_for_activity1;    }}对于想要特定于子类的每一点,您可以拥有更多抽象方法。在我看来,这样做要比将具体的子类具体化为具体的超类好得多:这可能会导致许多问题,并且通常很难调试。

忽然笑

这个问题已经有了很好的答案。然而。我的答案是针对那些正在寻找工作示例的人。这是完整的工作-> 代码我们在这里没有做任何新的事情,就像任何其他继承方案一样(您希望在多个地方有一些共同的行为,但只想编写一次该行为)。优点: 它的确提供了更好的代码可读性,可维护性和等等。但是不是这些能力,如果您的大脑像瞪羚一样运转,它们对您来说就没有关系。我们追求继承“ CONTROL”的真正力量。(这也是现实生活中发生的事情。父母控制孩子:))。在我的示例中,我有两个活动MainActivity和OtherActivity。两种活动都有不同的布局,但是我希望它们都以动画或欢迎消息开头。我们的首要任务是找出常见行为。在这里->从动画开始活动。我们已经找到了常见的“事物”,现在我们将该行为写在BaseClass(AnimationActivity)中。MainActivity和OtherActivity将继承AnimationActivity。所以代码看起来像是`基础活动AnimationActivity {  startAnimation()  {      ....    } }儿童活动MainActivity extends AnimationActivity{}OtherActivity extends AnimationActivity{}这种设计方法提供了很多控制和灵活性(POWER OF MODIFIER)。1)控制:当您决定以动画开始活动时,将动画方法保留在onCreate()中。将您的方法保留在onCreate(Bundle bundle)方法中。现在,只需更改修改器,就可以控制子活动。如果将修饰符保留为final:子级活动将从父级Animation开始。摘要:儿童活动将不得不赋予自己的动画效果。no修饰符:子活动可以通过覆盖动画方法来拥有自己的动画,否则,子活动将具有父级动画。2)灵活性:不要将动画方法保留在onCreate()内,可以通过不将动画方法保留在onCreate(Bundle bundle)中来提供子活动的灵活性。现在,活动可以灵活地具有父级动画或自己的动画,也可以根本没有动画。希望能帮助到你。学习愉快。`

www说

是的,您可以,您应该牢记基本的继承规则。如果您将内部AsyncTask活动和属性定义为私有属性而不是私有属性,则将继承它们。从现在看来,我认为您应该使BaseActivity成为一个抽象类,因为仅会真正使用subActivities的实例。您应该只是开始尝试一下,它就会比您想象的要容易地工作。如果您发现任何问题,请问。
随时随地看视频慕课网APP

相关分类

Android
我要回答