如何从当前 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));
我创建了两个活动 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));