Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,32 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Activities"
tools:targetApi="31" />
tools:targetApi="31">

<activity
android:name=".ActivityD"
android:exported="false"
android:taskAffinity="${applicationId}.stack2" />

<activity
android:name=".ActivityC"
android:exported="false"
android:taskAffinity="${applicationId}.stack2" />

<activity
android:name=".ActivityB"
android:exported="false"
android:taskAffinity="${applicationId}.stack2" />

<activity
android:name=".ActivityA"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
33 changes: 33 additions & 0 deletions app/src/main/java/otus/gpb/homework/activities/ActivityA.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package otus.gpb.homework.activities

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import otus.gpb.homework.activities.databinding.ActivityABinding

class ActivityA : AppCompatActivity() {

private lateinit var binding: ActivityABinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityABinding.inflate(layoutInflater)
setContentView(binding.root)

binding.openActivityBButton.setOnClickListener {
openActivityB()
}
}

override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
setIntent(intent)
}

private fun openActivityB() {
val intent = Intent(this, ActivityB::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
startActivity(intent)
}
}
25 changes: 25 additions & 0 deletions app/src/main/java/otus/gpb/homework/activities/ActivityB.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package otus.gpb.homework.activities

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import otus.gpb.homework.activities.databinding.ActivityBBinding

class ActivityB : AppCompatActivity() {

private lateinit var binding: ActivityBBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityBBinding.inflate(layoutInflater)
setContentView(binding.root)

binding.openActivityCButton.setOnClickListener {
openActivityC()
}
}

private fun openActivityC() {
startActivity(Intent(this, ActivityC::class.java))
}
}
61 changes: 61 additions & 0 deletions app/src/main/java/otus/gpb/homework/activities/ActivityC.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package otus.gpb.homework.activities

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import otus.gpb.homework.activities.databinding.ActivityCBinding

class ActivityC : AppCompatActivity() {

private lateinit var binding: ActivityCBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityCBinding.inflate(layoutInflater)
setContentView(binding.root)

binding.openActivityAButton.setOnClickListener {
openActivityA()
}
binding.openActivityDButton.setOnClickListener {
openActivityD()
}
binding.closeActivityCButton.setOnClickListener {
closeActivityC()
}
binding.closeStackButton.setOnClickListener {
closeStack()
}
}

private fun openActivityA() {
val intent = Intent(this, ActivityA::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
}
startActivity(intent)
}

private fun openActivityD() {
val intent = Intent(this, ActivityD::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
}
startActivity(intent)
}

private fun closeActivityC() {
finish()
}

private fun closeStack() {
val intent = Intent(this, ActivityA::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
}
startActivity(intent)
finishAffinity()
}
}
16 changes: 16 additions & 0 deletions app/src/main/java/otus/gpb/homework/activities/ActivityD.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package otus.gpb.homework.activities

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import otus.gpb.homework.activities.databinding.ActivityDBinding

class ActivityD : AppCompatActivity() {

private lateinit var binding: ActivityDBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityDBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
14 changes: 14 additions & 0 deletions app/src/main/res/layout/activity_a.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f44336">

<Button
android:id="@+id/openActivityBButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Open ActivityB" />

</FrameLayout>
14 changes: 14 additions & 0 deletions app/src/main/res/layout/activity_b.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#4caf50">

<Button
android:id="@+id/openActivityCButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Open ActivityC" />

</FrameLayout>
34 changes: 34 additions & 0 deletions app/src/main/res/layout/activity_c.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#2196f3"
android:gravity="center"
android:orientation="vertical"
android:padding="24dp">

<Button
android:id="@+id/openActivityAButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open ActivityA" />

<Button
android:id="@+id/openActivityDButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open ActivityD" />

<Button
android:id="@+id/closeActivityCButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Close ActivityC" />

<Button
android:id="@+id/closeStackButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Close Stack" />

</LinearLayout>
5 changes: 5 additions & 0 deletions app/src/main/res/layout/activity_d.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffeb3b" />