Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Java 一个Android应用程序中有多个应用程序文件_Java_Android Manifest_Android - Fatal编程技术网

Java 一个Android应用程序中有多个应用程序文件

Java 一个Android应用程序中有多个应用程序文件,java,android-manifest,android,Java,Android Manifest,Android,我制作了三个应用程序,现在我想在一个apk文件中发布(一次安装)。启动“包装器应用程序”时,用户应决定运行哪个应用程序 到目前为止还不错,但问题是,每个应用程序都在使用应用程序文件中的全局常量。有没有办法将这三个应用构建为一个,每个应用都使用自己的应用程序文件 谢谢 为了避免混淆,我添加了一个简短的示例: 应用程序1: public class AApplication extends Application { public static String CONSTANT_1 = "aa

我制作了三个应用程序,现在我想在一个apk文件中发布(一次安装)。启动“包装器应用程序”时,用户应决定运行哪个应用程序

到目前为止还不错,但问题是,每个应用程序都在使用应用程序文件中的全局常量。有没有办法将这三个应用构建为一个,每个应用都使用自己的应用程序文件

谢谢

为了避免混淆,我添加了一个简短的示例:

应用程序1:

public class AApplication extends Application {
    public static String CONSTANT_1 = "aaa";
}
应用程序2:

public class BApplication extends Application {
public static String CONSTANT_1 = "bbb";
}
应用程序3:

public class CApplication extends Application {
    public static String CONSTANT_1 = "ccc";
}

可能您需要三个可以启动的活动。在清单中添加如下内容:

<activity
        android:name=".Activityone"
        android:label="First Activity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

<activity
        android:name=".Activitysecond"
        android:label="Second Activity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

<activity
        android:name=".Activitythree"
        android:label="Third Activity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>


这样,用户可以单击三个图标(活动)。

您不能将三个不同的apk及其各自的代码库集成到单个apk中运行,或者将所有三个代码库集成到单个应用程序中,并根据用户的选择将所有三个分为不同的模块来运行。

确定,由于我的想法显然无法实现,我提出了以下解决方法:

  • 我在新项目中创建了一个应用程序类

    public class NewApplication extends OldSuperApplication {}
    
  • 我添加了一个方法

    public static void setApplication(RGCApplication a) {
        CONSTANT_1 = a.CONSTANT_1;
        ...
    } 
    
  • 在startscreen(本例中为应用程序“A”)上选择所需的“子应用程序”后,我调用


  • 我不确定这是不是很臭的编码,但它是有效的

    请描述你正在努力实现的目标。为什么是3个应用程序?为什么不是一个呢?三个应用程序,因为它们基于相同的库项目-相同的代码库,它们做的几乎相同,但看起来不同。谢谢你的回答Giuseppe,但这不是我想要的。每个应用程序都由几个活动组成。但问题是应用程序类。每个应用程序使用应用程序类中定义的多个常量。CONTSTATN的名称相同(这就是为什么我不能将它们放入一个应用程序文件中),但值不同。您的应用程序类可以与这三个活动共享。如果它们是常量,则将其设为静态,您可以轻松检索它们。但是我有三个应用程序类,它们具有不同的常量,它们具有相同的名称,但每个类的值不同。例如,公共静态字符串常量_1=“aaa”;在下一个应用类别中,同一常数的值为“bbb”,在第三个类别中,该值为“ccc”。。。我需要能够以某种方式将三个应用程序与三个不同的应用程序类组合成一个…抱歉,我不明白问题出在哪里。如果你有常数,你可以使三个应用程序保持静态,你可以用Application1.CONSTANT\u 1、application2.CONSTANT\u 1等检索值。你是对的,我现在基本上就是这么做的。问题是,要在启动时初始化它们,就像Android使用一个(单例)应用程序类那样。但正如我在上面的回答中提到的,我在选择应用程序后设置了相关的应用程序常量,从而解决了这个问题。不过还是要谢谢你!你所说的“所有3个不同的模块”是什么意思?java概念中的模块,利用源代码实现任何特定的功能谢谢你的回答,但我认为这是一个特定于Android的问题,我必须找到一个解决方案,将三个不同的应用程序类合并到一个Android项目中。正如下面的评论中提到的,每个Android项目都有一个应用程序类(singleton),而我——因为最初每个应用程序都是独立的——有三个应用程序类,其中每个应用程序类的常量具有相同的名称,但值不同。确切地说,android应用程序遵循单例模式,因此一个应用程序/apk不能有超过1个应用程序级别的类。
    NewApplication.setApplication(new AApplication());
    
    NewApplication.setApplication(new BApplication());