我在管理后台堆栈中的活动时遇到困难。如果用户点击通知,则活动B被打开,在某个时候活动B将被关闭,我需要打开活动A,但在这里我可以有两种情况,如果活动A已经打开并且在后台堆栈中,那么我想在不重新打开它的情况下返回到此,如果活动A从未打开过,那么我必须打开它。我如何实现这一点?
val notifyIntent = Intent(context, ActivityB::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
putExtra(MODEL_KEY, model)
}
NotificationManagerCompat.from(context).notify(
Date().time.toInt(),
Builder(context, NotificationSettings.channelId)
.setSmallIcon(NotificationSettings.smallIconId)
.setContentTitle(remoteMessage.notification?.title ?: remoteMessage.data[BODY])
.setContentText(remoteMessage.notification?.body ?: remoteMessage.data[SOURCE])
.setStyle(
BigTextStyle().bigText(
remoteMessage.notification?.body ?: remoteMessage.data[SOURCE]
)
)
.setPriority(PRIORITY_DEFAULT)
.setContentIntent(
getActivity(
context, 0, notifyIntent, FLAG_UPDATE_CURRENT
)
)
.setAutoCancel(true).build()
)
你可以通过以下方式实现这种行为:https://developer.android.com/training/notify-user/navigation#DirectEntry
简单的豌豆柠檬汁。
//this functions you put true if opened from notification
private boolean isOpenNotification;
@Override
public void onBackPressed() {
if (isTaskRoot() && isOpenNotification) {
finish();
//open your activity here
} else {
setResult(RESULT_OK);
super.onBackPressed();
}
}
您可以在活动b
中使用此代码:
Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
这将返回到< code>ActivityA的前一个实例(并删除任务堆栈中位于该实例之上的任何其他活动),或者如果任务中没有< code>ActivityA的现有实例,则它将创建一个新实例。
我有一个主要的活动,当我点击一个按钮,开始一个新的活动时,我使用了以下代码: 上面的代码是从主活动中运行的。 现在在主活动调用的新活动中,我有一个后退按钮。当我点击这个后退按钮时,我希望我的新活动结束,它必须回到原来的主活动。 我尝试过调用,只是(从新活动),但这会关闭我的整个应用程序(包括我的主要活动)。 如何关闭当前关注的活动,然后返回到主活动? 编辑 事实上,我的手机的后退按钮也关闭了我的整
在Android中,当我们用一个新的片段替换容器视图时,我们可以使用replace()和addToBackStack(),因此按下back按钮就可以转到上一个片段。 但如果出现以下情况怎么办: 在Activity1中,我可以按下back按钮从fragment2转到fragment1。但当fragment2启动另一个活动时,从Activity2按下back按钮,它会将我带到Activity1中的fr
我有第一活动,它通过意图调用第二活动 在SecondActivity完成后,我希望SecondActivity向FirstActivity发送一些变量。然后调用finsih(),它将返回到第一个活动。如何使SecondActivity发送变量并在FirstActivity中获得结果?
单击按钮转到另一个活动,然后返回到原始活动。 我试图保存两个整数离开活动的另一个活动,然后稍后当我返回到原来的活动,我得到一个null包。 有人知道为什么这不起作用吗? 我使用savedInstanceState bundle在屏幕旋转时保存变量,它在这种情况下工作,但是当我离开查看另一个活动并稍后返回此活动时,该bundle没有保存。返回时获取空值。 onSavedInstanceState方法
在profileActivity.java中有以下代码: ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
我有一个应用程序具有这种转换: 输入后,我必须检查一个标志。然后我必须将其作为意图(让我们说)传递给。在中做了一些事情后,它会在按下按钮后返回。我所做的只是再次传递值为true的,然后再次启动活动C。所以发生的是它创建了另一个活动C。 我想做的是,我不必启动一个新的活动C,只需调用super即可使用以前的C。onBackPressed()。但我无法传递intentX的新值。有没有其他方法来实现我想