#Первое задание по activity#51
#Первое задание по activity#51Morozov0208Saveliy wants to merge 2 commits intoOtus-Android:masterfrom
Conversation
| <activity | ||
| android:name=".ActivityD" | ||
| android:exported="false" | ||
| android:launchMode="singleTask" /> |
There was a problem hiding this comment.
@Morozov0208Saveliy , тут сингл-таск избыточен, и он не решит задачи 4. Объясню как сделать ниже - в обработчике нажатия
| Log.i(TAG, "call onCreate ActvityA") | ||
| buttonA = findViewById(R.id.buttonAtoB) | ||
| buttonA?.setOnClickListener { | ||
| val intent = Intent(this, ActivityB::class.java) |
There was a problem hiding this comment.
@Morozov0208Saveliy, тут нужно выполнить задание 2.1 - открыть В в отдельной задаче. У вас сейчас открывается в той же (это список последних запущенных):

Верное решение должно выглядеть примерно так:

Для того, чтобы запустить новый стек, я бы воспользовался флажками интента:
FLAG_ACTIVITY_MULTIPLE_TASK и FLAG_ACTIVITY_NEW_TASK
типа такого:
buttonA?.setOnClickListener {
val intent = Intent(this, ActivityB::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
startActivity(intent)
}| buttonToD = findViewById(R.id.act_C_to_Act_D) | ||
| buttonToD?.setOnClickListener { | ||
| finish() | ||
| val intent = Intent(this, ActivityD::class.java) |
There was a problem hiding this comment.
@Morozov0208Saveliy , для того, чтобы очистить текущий стек от того, что в нем сейчас, можно воспользоваться сочетанием флагов:
FLAG_ACTIVITY_CLEAR_TASK и FLAG_ACTIVITY_NEW_TASK
Попробуйте!
| closeStack = findViewById(R.id.close_stack) | ||
| closeStack?.setOnClickListener { | ||
| finish() | ||
| val intent = Intent(this, ActivityA::class.java) |
There was a problem hiding this comment.
@Morozov0208Saveliy, можно воспользоваться методом finishAffinity. Она закрывает весь текущий стек и, как результат, вернется на активити А
No description provided.