当前位置: 首页 > 知识库问答 >
问题:

在启动一个新的应用程序后,我如何回到相同的活动而不创建一个新的活动

姬自强
2023-03-14
private static void execute(Context context, String json, long timeout) {
    PackageInfo athmInfo;
    int athmVersionCode = 0;
    String athmBundleId = COM_EVERTEC_ATHMOVIL_ANDROID + buildType;

    Intent intent = context.getPackageManager().getLaunchIntentForPackage(athmBundleId);
    try {
        athmInfo = context.getPackageManager().getPackageInfo(athmBundleId, 0);
        athmVersionCode = athmInfo.versionCode;
    } catch (PackageManager.NameNotFoundException e) {
        logForDebug(e.getMessage());
    }
    if (intent == null || athmVersionCode <= ConstantUtil.ATH_MOVIL_REQUIRED_VERSION_CODE) {
        intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(ConstantUtil.ATH_MOVIL_MARKET_URL));
    }

    intent.putExtra((ConstantUtil.BUNDLE), context.getPackageName());
    intent.putExtra(ConstantUtil.JSON_DATA_KEY, json);
    intent.putExtra(ConstantUtil.PAYMENT_DURATION_TIME_KEY, timeout);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    <activity
        android:name=".Activity1"
        android:label=""
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="....ATHMSDK" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

Activity1还实现了我正在调用的Activity1的PaymentResponseListener和onResume

PaymentResponse.ValidatePaymentResponse(getIntent(),Activity1.this);//此函数来自他们的sdk,并且是只读的。

现在,当Activity1启动ATH Movil应用程序并获得响应时。它再次创建Activity1,而不是返回到现有的Activity1。谁能帮帮我吗?我的代码出了什么问题?

共有1个答案

方鸿振
2023-03-14

将此添加到AndroidManifesto中的activity标记:

android:launchMode="singleTop"

这假设您希望导航回启动ATH移动的任务并且后面堆栈上的最后一个项目确实是activity1。只要这些条件成立,那么android OS就会将您返回activity1的同一实例。

有关这方面的更多信息,您也可以参考这个。

 类似资料:
  • 我在一个活动中有一个列表视图,在自定义适配器中有一个信息图标。当用户点击该信息按钮时,下一个活动将打开,当用户点击更新按钮时,在下一个活动中标记出勤率后,第二个活动应该完成,第一个活动列表视图应该更新。 我成功地做了什么:我已经成功地标记了出席情况并更改了listview的颜色,但我在关闭第二个活动并重新启动第一个活动后这样做了。通过这种方式,由于再次开始活动,listview会得到更新。 我无法

  • 我已经完成了导航,现在进入第一个片段。在第一个片段中有两个按钮,我需要通过按下这些按钮来切换到一个新的活动。我不明白如何正确地实施它。我犯了一个错误。 代码,eror

  • 我正在我的应用程序中开发通知,我对即将到来的意图有一些问题,这让我抓狂。 正常流程:我的应用程序有启动程序活动(活动A,单顶),它显示一个飞溅,然后启动活动B(单顶也是)。 通知:当应用程序在后台时,我在通知栏上显示一个通知,当单击时,它会通过PendingIntent打开应用程序的启动器活动。这个PendingIntent地址为活动A(SingleTop)。但是在这个场景中,它没有打开活动A,而

  • 我有两个 列表 详细 列表显示项目列表,单击列表中的项目时显示详细信息。在中,我们观察从数据库获取提要的情况,一旦我们这样做了,我们就更新了用户界面。 列表页 现在我们有了一个页面,该页面更新了提要(项目),并且已经完成,但是更改没有反映在中。 详细信息页面 提要视图模型 为了简单起见,已经抽象了一些代码。如果需要,我可以添加它们来跟踪问题

  • 我有一个应用程序的屏幕小部件。单击此小部件时,会打开“DeveloperMode”设置。但在一些设备上,应用程序因以下消息而崩溃。 引起:android.util.AndroidRuntimeExcture:从活动上下文外部调用starActive()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗? 我曾尝试使用addFlags和setFlags添加这一行,但仍然存在相同

  • 下面是在没有fxml的情况下重新启动JavaFX应用程序的代码。 但是,我想用fxml实现这一点。 我不知道如何使用fxml应用此代码。 我的代码。 Main.java 控制器。JAVA 样品fxml 我想重新启动我的JavaFX应用程序。 我不知道如何使用fxml应用此代码。 如何使用fxml重新启动JavaFX应用程序?