我有一个显示一些通知的应用程序。用户单击它后,将启动一些Activity
,我们称之为Activity B
。用户按下后退按钮后,该应用程序将关闭,但我要做的不是关闭应用程序,而是将其发送到Activity A
应用程序MainActivity
,并在打开应用程序时首先启动以正常方式。如果应用程序没有通过推送通知启动,并且MainActivity首先启动就可以正常运行。我尝试在清单中为此android:parentActivityName=".ui.main.MainActivity"
使用Activity B
,但没有任何效果。
有什么办法可以使它变得更聪明,还是我只需要启动MainActivity
?
答案 0 :(得分:1)
您必须覆盖onBackPressed()并按如下所示在其中启动MainActivity
public void onBackPressed() {
startActivity(new Intent(CurrentActivity.this,MainActivity.class));
}
答案 1 :(得分:1)
打开通知时,应使用后向堆栈构建意图。 您的案例已在Android文档中详细记录,您可以找到所需的here
常规活动是您的情况:
这是一项活动,已存在于您应用的常规UX流中。因此,当用户从通知到达活动时,新任务应包括完整的后退堆栈,允许他们按“后退”并向上浏览应用程序层次结构。
答案 2 :(得分:1)
因此,感谢Pietro Scarampella的回答,我找到了想要的东西。
val resultPendingIntent = TaskStackBuilder.create(context).apply {
addNextIntentWithParentStack(intent)
}.getPendingIntent(messageId, PendingIntent.FLAG_ONE_SHOT)
intent
是我想开始的活动的意图,然后我用{p1}将resultPendingIntent
传递给我的通知
NotificationCompat.Builder(context, channelId)
[...]
.setContentIntent(resultPendingIntent)
我还添加了我在清单中的活动
android:parentActivityName=".ui.main.MainActivity"
现在,当我单击通知时,我想要的活动开始,而当我按下后退按钮MainActivity
时。
谢谢大家;)
答案 3 :(得分:0)
以这种方式覆盖BActivity中的onBackPressed方法:
public void onBackPressed()
{
this.startActivity(new Intent(BActivity.this,AActivity.class));
return;
}
答案 4 :(得分:0)
您可以在“活动”中执行以下操作
Java方式:
@Override
public void onBackPressed() {
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
}
科特琳的方式:
override fun onBackPressed() {
val myIntent: Intent = Intent(applicationContext, NextActivity::class.java);
myIntent.putExtra("key", value); //Optional parameters
startActivity(myIntent);
}
答案 5 :(得分:0)
在活动中覆盖onBackPress
override fun onBackPressed() {
val intent = Intent(applicationContext,Activity::class.java)
startActivity(intent)
}
答案 6 :(得分:0)
用法类似:
public void onBackPressed()
{
if(isTaskRoot()){
this.startActivity(new Intent(BActivity.this,AActivity.class));
}
finish()
}
答案 7 :(得分:0)
您想要实现的目标称为Up Navigation
。
如果启用了Back
,则在按Toolbar
(或ActionBar
)上的actionBar.setDisplayHomeAsUpEnabled()
按钮时也应调用该动作。为此,您应该通过清单(除了主要活动)为应用中的每个活动声明一个适当的父活动。
在这种情况下,您可以像这样使用onBackPressed
来调用NavUtils
时实现向上导航:
NavUtils.navigateUpFromSameTask(this)
详细了解here。
答案 8 :(得分:-1)
在将意图从MainActivity传递到活动B后,请确保没有调用let strs = [
'sample/single',
'sample//double',
'sample',
'//',
'/',
'//sample',
'sample//',
'/sample',
'sample/',
'sample///',
'///sample',
'////sample',
'/////sample',
'sample/////',
'sample////',
'sample / again',
'sa/mple agai/n'
]
。
您可以简单地使用以下代码从MainActivity启动到活动B的意图:
finish();
如果您希望将某些数据从活动B发送回MainActivity,也可以使用Intent intent = new Intent(MainActivity.this, ActivityB.class);
startActivity(intent);
。
您可以参考Android Intents的此链接,以获取有关它的更多详细信息。
https://developer.android.com/reference/android/content/Intent