Abstract Activity作为其他活动的基类

时间:2011-04-03 16:47:21

标签: android android-layout

我有这种情况:一个抽象活动和一系列扩展这个活动的活动。与父活动的区别只是一块布局,有些方法,我该如何处理布局?我声明'n'非常相似的布局?或者我只能声明一个,然后只延伸到变化的程度?在这种情况下,怎么样?

我举个例子。

在MyAbstractActivity中,我调用setContentView(R.layout.abstract_layout),其中abstract_layout.xml具有以下布局:

<LinearLayout>
    <Button id=1/>
    <Button id=2/>
    <Button id=3/>
    <Button id=4/>
</LinearLayout>

现在在扩展MyAbstractActivity的MyConcreteActivity中假设我们想要一个id = 2的Button下面的文本字段,我们该怎么办?

提前致谢!

修改 使用超类中的ViewStub解决并在子类中更改它。

1 个答案:

答案 0 :(得分:1)

您需要为每个子类分别设置一个布局。然后在你的子类onCreate中你可以做到:

setContentView(R.layout.concrete_layout_1);
super.onCreate(savedInstanceState);

避免在抽象活动中调用setContentView。根据您目前在MyAbstractActivity#onCreate中的代码,您可能需要进行一些重构。

最后,布局没有真正的继承概念,尽管你可以用<include ...>做一些有创意的事情;如果您关心Creating Reusable UI Components,可以查看DRY