diff --git a/app/build.gradle b/app/build.gradle
index 07e82a52..908e3ef3 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -24,11 +24,11 @@ android {
}
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
+ sourceCompatibility JavaVersion.VERSION_17
+ targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
- jvmTarget = '1.8'
+ jvmTarget = '17'
}
namespace 'otus.gpb.homework.activities'
buildFeatures {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 811aafa1..2d1dc906 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -11,6 +11,28 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Activities"
- tools:targetApi="31" />
+ tools:targetApi="31">
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/activities/ActivityA.kt b/app/src/main/java/otus/gpb/homework/activities/ActivityA.kt
new file mode 100644
index 00000000..e0eb4fe2
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/activities/ActivityA.kt
@@ -0,0 +1,40 @@
+package otus.gpb.homework.activities
+
+import android.content.Intent
+import android.os.Bundle
+import android.util.Log
+import android.view.ViewGroup
+import android.widget.Button
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+
+class ActivityA : AppCompatActivity(), BaseComponentsI {
+
+ override lateinit var buttonOpenView: Button
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.activity_a)
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+
+ getSupportActionBar()?.setTitle("Activity A")
+
+ buttonOpenView = findViewById(R.id.base).findViewById(R.id.button)
+ buttonOpenView.text = resources.getStringArray(R.array.open_buttons)[1] // Open Activity B
+ buttonOpenView.setOnClickListener {
+ startActivity( Intent(this, ActivityB::class.java).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
+ }
+ }
+
+ override fun onNewIntent(intent: Intent) {
+ super.onNewIntent(intent)
+ Log.d("ActivityA", "get ActivityA and call callback onNewIntent")
+ }
+
+}
diff --git a/app/src/main/java/otus/gpb/homework/activities/ActivityB.kt b/app/src/main/java/otus/gpb/homework/activities/ActivityB.kt
new file mode 100644
index 00000000..d022e026
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/activities/ActivityB.kt
@@ -0,0 +1,32 @@
+package otus.gpb.homework.activities
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.ViewGroup
+import android.widget.Button
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+
+class ActivityB : AppCompatActivity(), BaseComponentsI {
+ override lateinit var buttonOpenView: Button
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.activity_b)
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+
+ getSupportActionBar()?.setTitle("Activity B")
+
+ buttonOpenView = findViewById(R.id.base).findViewById(R.id.button)
+ buttonOpenView.text = resources.getStringArray(R.array.open_buttons)[2] // Open Activity C
+ buttonOpenView.setOnClickListener {
+ startActivity( Intent(this, ActivityC::class.java))
+ }
+ }
+}
diff --git a/app/src/main/java/otus/gpb/homework/activities/ActivityC.kt b/app/src/main/java/otus/gpb/homework/activities/ActivityC.kt
new file mode 100644
index 00000000..56bccb59
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/activities/ActivityC.kt
@@ -0,0 +1,51 @@
+package otus.gpb.homework.activities
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.ViewGroup
+import android.widget.Button
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+
+class ActivityC : AppCompatActivity() {
+ private lateinit var btn1:Button // Open A
+ private lateinit var btn2:Button // Open D
+ private lateinit var btn3:Button // Close C
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.activity_c)
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+
+ getSupportActionBar()?.setTitle("Activity C")
+
+ btn1 = findViewById(R.id.base_1).findViewById(R.id.button)
+ btn1.text = resources.getStringArray(R.array.open_buttons)[0] // Open Activity A
+ btn1.setOnClickListener {
+ val intent = Intent(this, ActivityA::class.java)
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
+ startActivity(intent)
+ }
+
+ btn2 = findViewById(R.id.base_2).findViewById(R.id.button)
+ btn2.text = resources.getStringArray(R.array.open_buttons)[3] // Open Activity D
+ btn2.setOnClickListener {
+ val intent = Intent(this, ActivityD::class.java)
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
+ startActivity(intent)
+ }
+
+ btn3 = findViewById(R.id.base_3).findViewById(R.id.button)
+ btn3.text = resources.getStringArray(R.array.close_buttons)[0] // Close Activity C
+ btn3.setOnClickListener { finish() }
+
+ }
+}
diff --git a/app/src/main/java/otus/gpb/homework/activities/ActivityD.kt b/app/src/main/java/otus/gpb/homework/activities/ActivityD.kt
new file mode 100644
index 00000000..d0a0fce4
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/activities/ActivityD.kt
@@ -0,0 +1,33 @@
+package otus.gpb.homework.activities
+
+import android.os.Bundle
+import android.view.ViewGroup
+import android.widget.Button
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+
+class ActivityD : AppCompatActivity(), BaseComponentsI {
+ override lateinit var buttonOpenView: Button
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.activity_d)
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+
+ getSupportActionBar()?.setTitle("Activity D")
+
+ buttonOpenView = findViewById(R.id.base).findViewById(R.id.button)
+ buttonOpenView.text = resources.getStringArray(R.array.close_buttons)[1] // Close Stack
+ buttonOpenView.setOnClickListener {
+ finishAffinity()
+ }
+ }
+
+
+}
diff --git a/app/src/main/java/otus/gpb/homework/activities/BaseComponentsI.kt b/app/src/main/java/otus/gpb/homework/activities/BaseComponentsI.kt
new file mode 100644
index 00000000..36be8cc3
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/activities/BaseComponentsI.kt
@@ -0,0 +1,8 @@
+package otus.gpb.homework.activities
+
+import android.widget.Button
+
+
+interface BaseComponentsI {
+ val buttonOpenView: Button
+}
diff --git a/app/src/main/res/layout/activity_a.xml b/app/src/main/res/layout/activity_a.xml
new file mode 100644
index 00000000..fb53aa35
--- /dev/null
+++ b/app/src/main/res/layout/activity_a.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_b.xml b/app/src/main/res/layout/activity_b.xml
new file mode 100644
index 00000000..e3803bc1
--- /dev/null
+++ b/app/src/main/res/layout/activity_b.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_c.xml b/app/src/main/res/layout/activity_c.xml
new file mode 100644
index 00000000..f2e5bbbe
--- /dev/null
+++ b/app/src/main/res/layout/activity_c.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_d.xml b/app/src/main/res/layout/activity_d.xml
new file mode 100644
index 00000000..7fc09332
--- /dev/null
+++ b/app/src/main/res/layout/activity_d.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/base.xml b/app/src/main/res/layout/base.xml
new file mode 100644
index 00000000..601c260f
--- /dev/null
+++ b/app/src/main/res/layout/base.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 08ea3c61..173c5470 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,13 @@
Activities
+
+ - Open Activity A
+ - Open Activity B
+ - Open Activity C
+ - Open Activity D
+
+
+ - Close Activity C
+ - Close Stack
+
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index fb9e5b80..2bdc1ccb 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,7 @@
#Sat Aug 27 13:57:30 MSK 2022
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
+#distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME