startActivity.md 2.2 KB

Запуск activity

val mainIntent = Intent(this, MainActivity::class.java)

// если надо что-то передать в активность
mainIntent.putExtra("city_name", cityName)

// запуск активности
startActivity( mainIntent )

// возврат из запущенной активности
finish()

// получение переданных параметров (intent создавать не надо, он есть у activity)
intent.getStringExtra("city_name")

Если надо получить результат

// запуск
startActivityForResult( 
    Intent(this, CityListActivity::class.java), 
    1 // идентификатор окна
)

// получение результата
// здесь requestCode = <идентификатор окна> (ответы от всех запущенных activity приходят в одно место)
// resultCode задается при ответе
// data необязательные данные из newIntent
@SuppressLint("MissingSuperCall")
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (data == null) {
        return
    }
    val name = data.getStringExtra("cityName")
}

// в запущенном перед закрытием установить результат
// запоминаем выбранное название города в параметрах
val newIntent = Intent()
newIntent.putExtra("cityName", cityName)
setResult(RESULT_OK, newIntent)
finish()

Таймер обратного отсчёта и переход на другое activity

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    object : CountDownTimer(1000,1000){
        override fun onTick(millisUntilFinished: Long) {
            // заставляем пялиться на нашу заставку как минимум 3 секунды
        }

        override fun onFinish(){
            switchToSecond()
        }
    }.start()
}

fun switchToSecond(){
    runOnUiThread {
        startActivity(
            Intent(this, SecondActivity::class.java)
        )
    }
}