3.5合并跨Java语言的Java源代码
问题
您希望将Android活动或其他Java类添加到单个产品风格。
解
创建正确的源文件夹,添加Java类,并将它们与主源集合合并。
讨论
虽然flavor和构建类型中的字符串和布局资源会覆盖主源集中的对应值,但Java类是不同的。如果你的代码在主源集合中引用一个特定的类,那么每个flavor和构建类型都可以有自己的实现类,只要你没有一个在main。
这听起来比它更复杂。在Recipe3.2和Recipe 3.4中讨论的“Hello,World”应用程序有两种代表客户端的口味。现在考虑一个修改版本的应用程序,添加一个按钮到主要活动来调用帮助。附加按钮具有标签“Call for Help!”。
主动(发射)的活动为友好,方便的风格如图3-14所示。
图3-14。 “wayne”客户的主要活动
“stark”页面是相同的,只是有一个不同的标题,如图3-15所示。
图3-15。 “stark”客户的主要活动
单击“Call for Help!”按钮创建一个启动CallForHelpActivity的Intent。此活动及其相关布局已从主源树中删除,并将一个副本添加到stark和wayne源集。使用友好的,方式,调试变型时的总体项目布局如图3-16所示。
对于wayne风格,帮助屏幕仅包含一个包含TextView的片段,如图3-17所示。
图3-17。帮助活动的风格
stark flavor的帮助页面包含一个包含多个条目的ListFragment,如图3-18所示。
图3-18。帮助活动的风格
主源集合中的元素引用的任何类必须存在于每个flavor中。之后,实现是完全独立的。
问题
您希望将Android活动或其他Java类添加到单个产品风格。
解
创建正确的源文件夹,添加Java类,并将它们与主源集合合并。
讨论
虽然flavor和构建类型中的字符串和布局资源会覆盖主源集中的对应值,但Java类是不同的。如果你的代码在主源集合中引用一个特定的类,那么每个flavor和构建类型都可以有自己的实现类,只要你没有一个在main。
这听起来比它更复杂。在Recipe3.2和Recipe 3.4中讨论的“Hello,World”应用程序有两种代表客户端的口味。现在考虑一个修改版本的应用程序,添加一个按钮到主要活动来调用帮助。附加按钮具有标签“Call for Help!”。
主动(发射)的活动为友好,方便的风格如图3-14所示。
图3-14。 “wayne”客户的主要活动
“stark”页面是相同的,只是有一个不同的标题,如图3-15所示。
图3-15。 “stark”客户的主要活动
单击“Call for Help!”按钮创建一个启动CallForHelpActivity的Intent。此活动及其相关布局已从主源树中删除,并将一个副本添加到stark和wayne源集。使用友好的,方式,调试变型时的总体项目布局如图3-16所示。
图3-16。main,stark和wayne风格的源文件夹
该图显示,wayne风格中的Java源代码当前在类路径中,而stark树中的Java源代码不是。两个flavor都包含CallForHelpActivity,但是每个的实现完全不同。对于wayne风格,帮助屏幕仅包含一个包含TextView的片段,如图3-17所示。
图3-17。帮助活动的风格
stark flavor的帮助页面包含一个包含多个条目的ListFragment,如图3-18所示。
图3-18。帮助活动的风格
主源集合中的元素引用的任何类必须存在于每个flavor中。之后,实现是完全独立的。