我有这种情况:一个抽象活动和一系列扩展这个活动的活动。与父活动的区别只是一块布局,有些方法,我该如何处理布局?我声明'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解决并在子类中更改它。
答案 0 :(得分:1)
您需要为每个子类分别设置一个布局。然后在你的子类onCreate
中你可以做到:
setContentView(R.layout.concrete_layout_1);
super.onCreate(savedInstanceState);
避免在抽象活动中调用setContentView
。根据您目前在MyAbstractActivity#onCreate
中的代码,您可能需要进行一些重构。
最后,布局没有真正的继承概念,尽管你可以用<include ...>
做一些有创意的事情;如果您关心Creating Reusable UI Components,可以查看DRY。