【问题标题】:In Android flavors Activity not getting changed based on flavor. Only main package activity is called在 Android 风格中,Activity 不会根据风格而改变。仅调用主包活动
【发布时间】:2017-09-25 12:02:04
【问题描述】:

我已经创建了 2 种口味(一种和两种)和一个主包,正如您在我分享的图像中看到的那样。这三种风格有一个单独的三个 MainActivity.class。 当我改变风格时,我试图改变其风格的 MainActivity.class 中的 textView 内容,但它没有改变。只有布局根据风格而不是类被替换。

例如,我将当前风格设置为一,并将 MainActivity.class 中的 textView 内容设置为“一”,它没有改变,但它采用主包的 MainActivity.class,并且布局正在根据风格进行工作。

项目结构图

【问题讨论】:

  • 您是否在 app.gradle 的 sourceset 中添加了不同风格的 .java 文件夹?
  • 是的,我已经添加了。请参阅上图以供参考。
  • 我的意思是你能把你的 build.gradle 放在定义源集的地方吗?
  • 具有相同名称(和包)的文件可以存在于您的主文件夹或相应的构建风格中。
  • @SarthakMittal 对不起,我无法联系到你,你能分享我任何链接或深入解释或任何参考。谢谢!

标签: android android-gradle-plugin android-productflavors


【解决方案1】:

只有布局根据风格而不是类被替换。

因为每次都要用到“main”的MainActivity.java。

其他两个模块中的包名必须相同。

Java 文件不会被替换,所以你可以移除 "main" 的 MainActivity。

【讨论】:

  • 我不确定我是否明白你的意思。你可以说得更详细点吗?我在想不可能删除 main 的 MainActivity。谢谢!
  • M,如果我创建相同的包名和类名,工作室不会允许这种冲突。
  • 是的,java类没有被替换,所以你可以从“main”中删除MainActivity试试。
  • M,您好,您的解决方案有效,但方式不同。查看我的项目结构imgur.com/a/cOcyC的图片链接。我希望在更改风味时自动将 SecondActivity 导入 MainActivity 中。目前,每当我更改风味时,我都必须手动更改 MainActivity 中 secondActivity 的导入。谢谢!
  • 保持包结构不变。您可以在 build.gradle 中为不同的风格提供不同的 applicationId。
【解决方案2】:

为您的特定风格创建一个清单文件,该文件覆盖该风格的新活动,如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<application>


    <!-- Tutorial activity -->
    <activity android:name="com.colan.flavortest.MainActivity" />
    <activity
        android:name="com.colan.newtwo.MainActivity"
        tools:node="remove" />
    <activity-alias
        android:name="com.colan.newtwo.MainActivity"
        android:targetActivity="com.colan.flavortest.MainActivity"
        tools:replace="android:targetActivity"/>

</application>
</manifest>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 2015-08-13
    • 2018-03-28
    • 1970-01-01
    相关资源
    最近更新 更多