3 回答
TA贡献1799条经验 获得超9个赞
您到底想达到什么目的?除了某些变量或布局的某些部分以外,是否有两个具有共同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;
}
}
对于想要特定于子类的每一点,您可以拥有更多抽象方法。
在我看来,这样做要比将具体的子类具体化为具体的超类好得多:这可能会导致许多问题,并且通常很难调试。
TA贡献1806条经验 获得超5个赞
这个问题已经有了很好的答案。
然而。我的答案是针对那些正在寻找工作示例的人。
这是完整的工作-> 代码
我们在这里没有做任何新的事情,就像任何其他继承方案一样(您希望在多个地方有一些共同的行为,但只想编写一次该行为)。
优点: 它的确提供了更好的代码可读性,可维护性和等等。但是不是这些能力,如果您的大脑像瞪羚一样运转,它们对您来说就没有关系。
我们追求继承“ 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)中来提供子活动的灵活性。现在,活动可以灵活地具有父级动画或自己的动画,也可以根本没有动画。
希望能帮助到你。
学习愉快。
`
TA贡献1775条经验 获得超8个赞
是的,您可以,您应该牢记基本的继承规则。如果您将内部AsyncTask活动和属性定义为私有属性而不是私有属性,则将继承它们。从现在看来,我认为您应该使BaseActivity成为一个抽象类,因为仅会真正使用subActivities的实例。
您应该只是开始尝试一下,它就会比您想象的要容易地工作。如果您发现任何问题,请问。
- 3 回答
- 0 关注
- 426 浏览
添加回答
举报