Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 抽象活动作为其他活动的基类_Android_Android Layout - Fatal编程技术网

Android 抽象活动作为其他活动的基类

Android 抽象活动作为其他活动的基类,android,android-layout,Android,Android Layout,我有这样的情况:一个抽象的活动和一系列扩展这个活动的活动。与父活动的区别只是一个布局和一些方法,如何处理布局?我声明“n”的布局非常相似?或者我只能声明一个,然后仅扩展到更改的范围?在这种情况下,怎么做 我给你举个例子 在MyAbstractActivity中,我调用setContentView(R.layout.abstract\u layout),其中abstract\u layout.xml具有以下布局: <LinearLayout> <Button id=1/&

我有这样的情况:一个抽象的活动和一系列扩展这个活动的活动。与父活动的区别只是一个布局和一些方法,如何处理布局?我声明“n”的布局非常相似?或者我只能声明一个,然后仅扩展到更改的范围?在这种情况下,怎么做

我给你举个例子

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

<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
。我正要这么做时发现了这个问题…下面是一个如何设置内容视图的示例: