Как начать новую деятельность с текущей? - PullRequest
0 голосов
/ 21 сентября 2018

Я создал две активности MainActivity и Main2Activity.Я хочу запустить Main2activity из MainActivity, а также завершить текущую активность и показать приветственный тост.Я использую этот код

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

, поэтому у меня нет проблем, но мне нужна помощь, когда я запускаю этот код, он работает нормально, но открытие Main2Activity занимает много времени, а всплывающее окно не отображается долго, когда Main2Activity открывает всплывающее окно, исчезает внесколько секунд, так что я думаю, что я неправильно расположил код, кто-то сказал мне, как правильно расположить этот код.например: сначала закончите, затем подождите второй, а затем начните занятие.

Ответы [ 5 ]

0 голосов
/ 22 сентября 2018
startActivity(new Intent(this, NewActivity.class));
0 голосов
/ 21 сентября 2018

попробуйте использовать это:

Intent intent = new Intent(this, NewActivity.class);
this.startActivity(intent);
0 голосов
/ 21 сентября 2018

Существует еще один подход, чтобы завершить текущую активность и вывести новую на вершину.

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)

0 голосов
/ 21 сентября 2018

Лучше не оставлять тостовое сообщение с завершенным заданием.Это может вызвать некоторые проблемы, такие как ошибка 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()
    }
}
0 голосов
/ 21 сентября 2018

Если вы расположите свой код следующим образом

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

Тогда вы начнете новое действие, а затем закончите текущее действие.Между изменениями все еще может быть небольшая задержка, но это нормально, и вы можете добавлять различные анимации, чтобы пользователи могли чувствовать плавные изменения.

...