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

如何在android中关闭活动并返回到以前的活动

弓俊晖
2023-03-14

我有一个主要的活动,当我点击一个按钮,开始一个新的活动时,我使用了以下代码:

Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);

上面的代码是从主活动中运行的。

现在在主活动调用的新活动中,我有一个后退按钮。当我点击这个后退按钮时,我希望我的新活动结束,它必须回到原来的主活动。

我尝试过调用super.finish(),只是完成()(从新活动),但这会关闭我的整个应用程序(包括我的主要活动)。

如何关闭当前关注的活动,然后返回到主活动?

编辑

事实上,我的手机的后退按钮也关闭了我的整个应用程序,这让我觉得我已经错误地启动了第二个活动?

好的,我一直在找,

我创建了一个设置活动,它使用相同的清单代码和相同的代码来启动该活动。

对于设置活动,当我按下后退按钮时,它将返回到主活动。

在主要问题中提到的活动,它只是退出我的整个应用程序。

所以问题似乎不在于完成活动的代码,而在于活动本身。

共有3个答案

邢臻
2023-03-14

当你点击你的按钮,你可以让它调用

super.onBackPressed();
杜俊晤
2023-03-14

只需在当前活动中调用finish()即可返回到上一个活动。注意finish()调用后的任何代码都将运行-您只需在调用finish()后返回即可解决此问题。

如果您想将结果返回到活动一,那么在开始活动二时,您需要:

startActivityForResults(myIntent, MY_REQUEST_CODE);

在被调用的活动中,您可以从onCreate()参数或used获取意图

getIntent();

若要设置返回结果到活动1,则在活动2中执行

setResult(Activity.RESULT_OK, MyIntentToReturn);

如果你不想回来,就说

setResult(Activity.RESULT_OK);

如果活动的结果不好,可以使用activity.RESULT\u Cancelled(默认情况下使用)。那么在活动一中你会做什么

onActivityResult(int requestCode, int resultCode, Intent data) {
    // Handle the logic for the requestCode, resultCode and data returned...
}

要完成两个活动,请使用上面所述的与完成()相同的方法,并且已经设置了结果。

慕凌
2023-03-14

我想您在启动SettingsActivity之前,正在调用main活动中的finish()方法。

你所描述的场景将以以下两种方式发生:

任何一个

您已经设置了android: noChen="true"Main ActiveAndroidManifest.xml,这将导致Main Active在按下后退键时自动完成

在切换到设置活动之前,您已经在您的主活动中调用了完成(),这会杀死它。当您按下后退按钮时,由于堆栈中没有其他活动被预设为弹出,它会返回主屏幕。

 类似资料:
  • 我正在建立一个简单的应用程序,我想从片段回到物理按钮的活动。我该怎么做?我试图杀死碎片,但它不起作用。

  • 我有一个应用程序具有这种转换: 输入后,我必须检查一个标志。然后我必须将其作为意图(让我们说)传递给。在中做了一些事情后,它会在按下按钮后返回。我所做的只是再次传递值为true的,然后再次启动活动C。所以发生的是它创建了另一个活动C。 我想做的是,我不必启动一个新的活动C,只需调用super即可使用以前的C。onBackPressed()。但我无法传递intentX的新值。有没有其他方法来实现我想

  • 在我的应用程序中,当我从后台回来时,我的活动会自动接近,并且它总是显示以前的活动。示例:我用活动A启动应用程序 }

  • 访客详细信息 我在访问者活动中有一个对话框。当我点击图标,它将重定向到相机活动。然后点击Camera Activity中的Confirm按钮,将意图发送回前一个活动,即访客活动。问题是我应该如何将Camera活动的意图结果传递回Visitor活动中的对话框。意图数据应该放在Pass No Edit文本中。我使用的是材料对话框,没有任何附加到该对话框的片段。这一切都放在访客活动中。谁能帮帮我吗?谢谢

  • 我在管理后台堆栈中的活动时遇到困难。如果用户点击通知,则活动B被打开,在某个时候活动B将被关闭,我需要打开活动A,但在这里我可以有两种情况,如果活动A已经打开并且在后台堆栈中,那么我想在不重新打开它的情况下返回到此,如果活动A从未打开过,那么我必须打开它。我如何实现这一点?

  • 我在我的项目中有两个活动。在我的DrawerActivity中,我添加了导航抽屉,在其他活动即TabActivity中,我有片段列表。我试图在DrawerActivity中显示TabActivity的内容。是否有可能这样做,或者我有遵循另一种方法。我是新手开发者,请帮帮我。 draweractivity.java //我的第二个活动是TabActivity,这里我想在draweractivity中