代码之家  ›  专栏  ›  技术社区  ›  elifekiz

如何从通用java类中为不同的产品风格调用不同的方法

  •  2
  • elifekiz  · 技术社区  · 9 年前

    我需要这样的东西:

    从任何方法:

    if(for one flavor)
    
       do something
    
    else
    
       do something
    

    我如何处理java的口味?

    4 回复  |  直到 9 年前
        1
  •  1
  •   Gabor Novak    9 年前

    您可以为口味指定文件。如果我是你,我会这样做: 将文件放入 main/java/your/package 来源,我们称之为 CustomClass.java . 它包含如下内容:

    public class CustomClass {
       public static void myCustomMethod() {
          //Do something here...
       }
    }
    

    之后,您可以在风味名称文件夹(主文件夹旁边)中创建该类的风味特定版本。 所以放一个CustomClass。java在这里: your_flavor_name/java/your/package 然后做其他事情:

      public class CustomClass {
           public static void myCustomMethod() {
              //Do something here for that specific flavor!
           }
        }
    

    构建将合并这些文件并使用特定的文件,如果没有找到特定的文件则使用主版本。您可以将其用于可绘制文件和其他文件(资产,…)。

    你只需要在这之后创造一种新的口味。在您的等级中添加以下内容:

    productFlavors {
            your_flavor_name {
                applicationId "your.package"
            }
    }
    

    这里有更多内容: http://developer.android.com/tools/building/configuring-gradle.html

        2
  •  0
  •   elifekiz    9 年前

    感谢您的回复@GaborNovak

    事实上,我搜索了类似于普通类的东西:

    if("flavor-name".equals(getApplicationContext().getPackageName())){
                    myIntent.setClass(thisClass.this, nextClass.class);
                }
                else {
                    myIntent.setClass(thisClass.this, nextClass.class);
                }
    

    我认为这有点令人困惑。当我编写getApplicationContext时。获取包名称->它在构建gradle中定义了所选风格的applicationid。 当我编写BuildConfig时。APPLICATION_ID->它获取包名称。有人能解释这种逻辑背后的原因吗?这不令人困惑吗?

        3
  •  0
  •   inkedTechie    9 年前

    定义两个 string.xml 两个人 product-flavors 分别添加一个通用名称字符串,例如,add <string name="flavor">Flavor One</string> 字符串.xml 第一种口味并添加 <string name="flavor">Flavor Two</string> 字符串.xml 第二种口味。现在在方法中,获取字符串的值 flavor 并相应地添加代码行。 因为,对于这两种口味,字符串口味将有两个不同的值。

        4
  •  0
  •   Ahmad Aghazadeh    9 年前

    在productFlavor中的something()中创建类:

    主要共同来源:

    main\java\com.exmaple.test\class.java - > something()
    

    风味1来源:

    flavor\java\com.exmaple.test\class.java - > something()
    

    风味2来源:

    flavor\java\com.exmaple.test\class。java->某物()