Android 抽象活动作为其他活动的基类
我有这样的情况:一个抽象的活动和一系列扩展这个活动的活动。与父活动的区别只是一个布局和一些方法,如何处理布局?我声明“n”的布局非常相似?或者我只能声明一个,然后仅扩展到更改的范围?在这种情况下,怎么做 我给你举个例子 在MyAbstractActivity中,我调用setContentView(R.layout.abstract\u layout),其中abstract\u layout.xml具有以下布局:Android 抽象活动作为其他活动的基类,android,android-layout,Android,Android Layout,我有这样的情况:一个抽象的活动和一系列扩展这个活动的活动。与父活动的区别只是一个布局和一些方法,如何处理布局?我声明“n”的布局非常相似?或者我只能声明一个,然后仅扩展到更改的范围?在这种情况下,怎么做 我给你举个例子 在MyAbstractActivity中,我调用setContentView(R.layout.abstract\u layout),其中abstract\u layout.xml具有以下布局: <LinearLayout> <Button id=1/&
<LinearLayout>
<Button id=1/>
<Button id=2/>
<Button id=3/>
<Button id=4/>
</LinearLayout>
现在,在扩展MyAbstractActivity的MyConcreteActivity中,假设我们希望按钮下面有一个id为2的文本字段,我们该怎么做
提前谢谢
编辑:
在超类中使用ViewStub并在子类中更改它解决了此问题。您需要为每个子类单独设置布局。然后在子类
onCreate
中,您可以执行以下操作:
setContentView(R.layout.concrete_layout_1);
super.onCreate(savedInstanceState);
并避免在抽象活动中调用setContentView
。根据当前在MyAbstractActivity#onCreate
中的代码,您可能需要进行一些重构
虽然你可以用
做一些创造性的事情,但最终并没有一个真正的布局继承概念;您可以检查您是否关心。您可以在子类中膨胀视图,然后编辑它并再次设置ContentView。您不能调用setContentView
两次。我在超类中解决了declarin ViewStub问题,并在子类中对其进行了更改。只是想知道为什么我们应该避免对抽象活动调用setContentView
。我正要这么做时发现了这个问题…下面是一个如何设置内容视图的示例: