diff --git a/app/build.gradle b/app/build.gradle index 3c3711b..0c342bd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,4 +52,5 @@ dependencies { implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.5.0' implementation 'com.google.android.material:material:1.6.1' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f318e6c..f0ed115 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,6 +12,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 0000000..3157920 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/activities/ActivityA.kt @@ -0,0 +1,49 @@ +package otus.gpb.homework.activities + +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import android.widget.Button + +const val tag = "TAG" + +class ActivityA : AppCompatActivity() { + private var button: Button? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + Log.i(tag, "onCreate A ${hashCode()}") + setContentView(R.layout.activity_a) + button = findViewById(R.id.open_b) + button?.setOnClickListener { + startActivity(Intent(this, ActivityB::class.java).apply { + flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK + }) + } + } + + override fun onStart() { + super.onStart() + Log.i(tag, "onStart A ${hashCode()}") + } + + override fun onStop() { + super.onStop() + Log.i(tag, "onStop A ${hashCode()}") + } + + override fun onResume() { + super.onResume() + Log.i(tag, "onResume A ${hashCode()}") + } + + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + Log.i(tag, "onNewIntent A ${hashCode()}") + } + + override fun onDestroy() { + super.onDestroy() + Log.i(tag, "onDestroy A ${hashCode()}") + } +} \ No newline at end of file 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 0000000..abb0678 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/activities/ActivityB.kt @@ -0,0 +1,45 @@ +package otus.gpb.homework.activities + +import android.content.Intent +import android.os.Bundle +import android.util.Log +import android.widget.Button +import androidx.appcompat.app.AppCompatActivity + +class ActivityB : AppCompatActivity() { + private var button: Button? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + Log.i(tag, "onCreate B") + setContentView(R.layout.activity_b) + button = findViewById(R.id.open_c) + button?.setOnClickListener { + startActivity(Intent(this, ActivityC::class.java)) + } + } + + override fun onStart() { + super.onStart() + Log.i(tag, "onStart B") + } + + override fun onStop() { + super.onStop() + Log.i(tag, "onStop B") + } + + override fun onResume() { + super.onResume() + Log.i(tag, "onResume B") + } + + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + Log.i(tag, "onNewIntent B") + } + + override fun onDestroy() { + super.onDestroy() + Log.i(tag, "onDestroy B") + } +} \ No newline at end of file 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 0000000..9d4f6b1 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/activities/ActivityC.kt @@ -0,0 +1,67 @@ +package otus.gpb.homework.activities + +import android.content.Intent +import android.os.Bundle +import android.util.Log +import android.widget.Button +import androidx.appcompat.app.AppCompatActivity + +class ActivityC : AppCompatActivity() { + private var buttonOpenA: Button? = null + private var buttonOpenD: Button? = null + private var buttonCloseC: Button? = null + private var buttonCloseStack: Button? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + Log.i(tag, "onCreate C") + setContentView(R.layout.activity_c) + buttonOpenA = findViewById(R.id.open_a) + buttonOpenD = findViewById(R.id.open_d) + buttonCloseC = findViewById(R.id.close_c) + buttonCloseStack = findViewById(R.id.close_stack) + + buttonOpenA?.setOnClickListener { + startActivity(Intent(this, ActivityA::class.java)) + } + + buttonOpenD?.setOnClickListener { + startActivity(Intent(this, ActivityD::class.java).apply { + flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK + }) + } + + buttonCloseC?.setOnClickListener { + finish() + } + + buttonCloseStack?.setOnClickListener { + finishAffinity() + } + } + + override fun onStart() { + super.onStart() + Log.i(tag, "onStart C") + } + + override fun onStop() { + super.onStop() + Log.i(tag, "onStop C") + } + + override fun onResume() { + super.onResume() + Log.i(tag, "onResume C") + } + + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + Log.i(tag, "onNewIntent C") + } + + override fun onDestroy() { + super.onDestroy() + Log.i(tag, "onDestroy C") + } + +} \ No newline at end of file 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 0000000..5f5a2d6 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/activities/ActivityD.kt @@ -0,0 +1,39 @@ +package otus.gpb.homework.activities + +import android.content.Intent +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity + +class ActivityD : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + Log.i(tag, "onCreate D") + setContentView(R.layout.activity_d) + } + + override fun onStart() { + super.onStart() + Log.i(tag, "onStart D") + } + + override fun onStop() { + super.onStop() + Log.i(tag, "onStop D") + } + + override fun onResume() { + super.onResume() + Log.i(tag, "onResume D") + } + + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + Log.i(tag, "onNewIntent D") + } + + override fun onDestroy() { + super.onDestroy() + Log.i(tag, "onDestroy D") + } +} \ No newline at end of file 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 0000000..9bbf0e3 --- /dev/null +++ b/app/src/main/res/layout/activity_a.xml @@ -0,0 +1,24 @@ + + + +