按下背面的开始活动

时间:2018-10-05 09:32:43

标签: android kotlin

我有一个显示一些通知的应用程序。用户单击它后,将启动一些Activity,我们称之为Activity B。用户按下后退按钮后,该应用程序将关闭,但我要做的不是关闭应用程序,而是将其发送到Activity A应用程序MainActivity,并在打开应用程序时首先启动以正常方式。如果应用程序没有通过推送通知启动,并且MainActivity首先启动就可以正常运行。我尝试在清单中为此android:parentActivityName=".ui.main.MainActivity"使用Activity B,但没有任何效果。

有什么办法可以使它变得更聪明,还是我只需要启动MainActivity

9 个答案:

答案 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