如何从当前 activity 开始新的 activity?

How to start new activity from current activity?

我创建了两个活动 MainActivity 和 Main2Activity。我想从 MainActivity 启动 Main2activity,还想完成当前 activity 并祝酒词。我正在使用此代码

val intent = Intent(this,Main2Activity::class.java)
    Toast.makeText(this,getString(R.string.welcome),Toast.LENGTH_LONG).show()
    finish()
    startActivity(intent)

所以我没有问题,但是当我 运行 这段代码工作正常但 Main2Activity 需要很长时间才能打开并且 toast 没有显示很长时间时,当 Main2Activity 打开时 toast 会在几秒钟内消失所以我认为我把代码排错了 有人告诉我如何正确安排这段代码。 例如: 先结束,再敬酒,然后开始 activity.

如果你这样安排你的代码

val intent = Intent(this,Main2Activity::class.java)
    Toast.makeText(this,getString(R.string.welcome),Toast.LENGTH_LONG).show()
    startActivity(intent)
    finish()

然后您将开始新的 activity,然后完成当前的 activity。您仍然可以在更改之间稍微延迟一些,但这是正常的,您可以添加不同的动画,以便用户可以感受到平滑的更改。

还有一种方法可以完成您当前的 Activity 并将新的方法置于顶部。

val intent = Intent(this,Main2Activity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
Toast.makeText(this,getString(R.string.welcome),Toast.LENGTH_LONG).show();  
startActivity(intent)

顺便说一句,你可以这样吐司,

Toast.makeText(this,R.string.welcome,Toast.LENGTH_LONG).show()

您不需要致电 getString(R.string.welcome)

最好不要在完成后留言祝酒 activity。它可能会导致一些问题,例如 Screen Overlay Detected 错误。所以,这样做:

在 MainActivity 中:

val intent = Intent(this, Main2Activity::class.java)
intent.putExtra("SHOW_WELCOME", true)
startActivity(intent)
finish()

在 Main2Activity 中:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    if (intent.getBooleanExtra("SHOW_WELCOME", false)) {
        Toast.makeText(this, getString(R.string.welcome), Toast.LENGTH_LONG).show()
    }
}

尝试使用这个:

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