Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.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_Design Patterns_Architecture - Fatal编程技术网

Android 处理不同活动的相同布局的最佳方法

Android 处理不同活动的相同布局的最佳方法,android,design-patterns,architecture,Android,Design Patterns,Architecture,我一直在开发一个应用程序,该应用程序有3种与it相关的账户。我们创建一个单一布局和查看/隐藏项目,具体取决于您当前登录的帐户 通过这种方法,我们有活动/片段做许多不同的事情,它们处理所有包装在if/else检查中的情况。随着项目的发展,维护这些类变得越来越困难 比如说,如果我必须隐藏某个场景中的视图,我必须环顾四周许多

我一直在开发一个应用程序,该应用程序有3种与it相关的账户。我们创建一个单一布局
查看/隐藏
项目,具体取决于您当前登录的帐户

通过这种方法,我们有
活动/片段
做许多不同的事情,它们处理所有包装在
if/else
检查中的情况。随着项目的发展,维护这些类变得越来越困难

比如说,如果我必须隐藏某个场景中的视图,我必须环顾四周许多
检查以隐藏单个按钮,因为如果我将其隐藏在一个地方,另一个检查将使其再次可见,很难维护

我期待专家们就此问题提供最好的建议


为同一布局创建不同的xml,并使用

标记以创建布局,它将减少if/else,并为您提供代码可重用性

您已经创建了新的xml文件,其中包含活动和片段的公共视图,然后需要使用xml中的include标记将这些公共视图添加到活动和片段xml中。

如果您的单独应用程序需要轻微的自定义和主题更改,但是,如果你真的是同一个基础应用程序,那么多个口味绝对是最好的选择。然而,如果这两个应用程序都需要大量的自定义代码差异,您可能需要重新考虑使用多风格策略

另外,注意风格和构建类型之间的差异。在Play Store中可能需要同一应用程序的不同版本的情况下(例如,免费和专业版),或者在为多个客户端自定义同一应用程序的情况下,请使用flavors


有关详细信息

我认为您应该为所有3种类型的帐户创建单独的布局,您可以创建PickLayout静态类/方法来按类型选择布局

int-getLayout(int类型){
返回layoutMap.get(类型);
}

若你们有可重用的布局,那个么你们应该使用,或者你们也可以使用

如果你有一个if/else链,那么你应该使用一个可缩放的、容易出错的地图


尝试遵循这一点也将有助于编写测试用例。

如果代码中分散了很多If/else,那么您可能应该在代码中使用多态性

为活动创建一个抽象类,然后为每个特定类型专门化它

使用Factory方法模式创建此层次结构的对象。这个方法将使用参数来决定实例化哪个具体类,然后初始化返回的实例

如果所有子类都有一个通用的算法,但其中包含每个类应该实现的一些开放步骤,则使用模板方法模式


如果您需要在运行时修改的多态代码,请使用状态/策略模式。

除了flavors之外,还有其他方法可以正确处理它吗?然后使用单独的java类和xml文件。我认为这是正确的方法,因为我们不允许使用flavors。