我的应用程序的测试版本与生产版本有几个不同的功能。我在主要活动中使用静态常量来区分它们:
static final boolean TestingBuild = true;
// ...
if ( TestingBuild ) {
initNewFeature();
}
但是这两个版本还需要XML布局文件中的差异。例如,测试版本需要一个激活新功能的按钮。我该如何解决这个问题?
我目前的解决方案是根据TestingBuild
加载不同的XML文件,但这会导致大量重复的XML代码。此外,当我需要进行更改时,我需要编辑两个XML文件而不是一个。
答案 0 :(得分:0)
没有其他方法可以为您的情况提供多种XML布局。但是,您可以使用include和merge标记删除重复的代码。
定义一个可发布的布局并包含您的测试布局,其中一些视图仅用于测试。
这样的事情:
testing_layout:
<Button
android:layout_height=".."
android:layout_width=".."
...
/>
测试布局是一个简单的例子。如果您愿意,可以使用周围的ViewGroup。
release_layout:
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent">
<TextView.../>
<Button.../>
<include layout="@layout/testing"
<!-- here you can redefine android:layout_ tags of the included layout -->
/>
</LinearLayout>
通过这种方式,您可以添加部分UI而无需重复代码,这样可以更好地使用和维护。但是你仍然需要两个布局,一个用于发布而不包含,一个用于测试包含。决定自己哪些代码可以为您节省更多代码,以便在发布版布局中包含测试,或者相反。