繁体   English   中英

如何从当前活动开始新活动?

[英]How to start new activity from current activity?

我创建了两个活动MainActivity和Main2Activity。 我想从MainActivity启动Main2activity,也想完成当前活动并显示欢迎词。 我正在使用此代码

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

所以我没有问题,但是当我运行此代码时我需要帮助,它可以正常工作,但是Main2Activity需要很长时间才能打开,并且在Main2Activity打开toast时吐司未显示很长时间,因此在几秒钟内消失了,所以我认为我将代码编错了,有人告诉我我如何正确安排此代码。 例如:先完成,再敬酒,然后再开始活动。

最好不要在完成活动后留下祝酒词。 它可能会引起一些问题,例如“屏幕覆盖检测到”错误。 因此,请执行以下操作:

在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);

如果您这样安排代码

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

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

还有另一种方法可以完成当前活动并将新方法带到顶部。

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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM