【问题标题】:Using a different class for an Intent based on the product flavor根据产品风味为 Intent 使用不同的类
【发布时间】:2019-07-02 13:52:52
【问题描述】:

我们目前正在与flavors 合作,以创建具有相同代码库的不同应用。我遇到过这种情况:

我有两个应用程序,App AApp B。在src/main 内部,因此在两种风格的范围内,我都有一个名为Start_Activity 的活动。从Start_Activity,我想移动到A_ActivityB_Activity,这取决于我们所在的应用程序。A_ActivityB_Activity 仅在它们各自风格的范围内。

尝试这个的最佳方法是什么?我不想将Start_Activity 移动到不同的风格中,因为这会破坏重用代码的意义。

我可以从资源文件或清单中解析Intent 的活动类吗?或者我可以只创建一个具有相同命名常量的类,每种风格都存在吗?

编辑

我没有提到我特别不想使用活动共享相同名称并且仅存在于各自风格范围内的方法(例如,将A_ActivityB_Activity都重命名为@ 987654333@).

我不想使用它,因为我可能会遇到 App C 也想使用 A_Activity 的情况。使用这种方法,我必须拥有 App AApp C 两种风格的 A_Activity 文件,这对于我想做的事情来说不够干净.

【问题讨论】:

    标签: android android-activity android-productflavors


    【解决方案1】:

    看这里: https://stackoverflow.com/a/16746755/7325737

    “如果您想在两种风格中拥有同一类的不同版本,您需要在两种风格中创建它。

    src/flavor1/java/com/foo/A.java
    src/flavor2/java/com/foo/A.java
    

    然后你在 src/main/java 中的代码就可以了

    import com.foo.A
    

    根据选择的风格,使用正确版本的 com.foo.A。"

    我认为这应该对你有帮助!

    【讨论】:

    • 谢谢哈尼!虽然这绝对是正确的,但我应该提到我特别不想使用这种方法,因为我也可能遇到 App C 也想使用 @987654324 的情况@。使用您的方法,我必须同时拥有 App AApp C 两种风格的 A_Activity 文件,这对我来说不够干净。
    【解决方案2】:

    Start_Activity 中,您可以通过Intent.parseUri(..) 创建启动意图,可以从配置文件或字符串资源加载

    【讨论】:

    • 如何在我的应用程序中使用 URI 进行活动?我是否必须在应用的清单中声明 URI?
    • 我用过这个方法,效果很好!您介意添加一个示例以让其他寻找答案的人更清楚吗?或者我可以在您的答案中编辑一个示例吗?
    猜你喜欢
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多