diff --git a/app/build.gradle b/app/build.gradle index c5cf1b8..4dda39e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,10 +3,6 @@ plugins { id 'org.jetbrains.kotlin.android' } -kotlin { - jvmToolchain(17) -} - android { compileSdk 34 namespace "otus.gpb.homework.fragments" @@ -34,6 +30,9 @@ android { kotlinOptions { jvmTarget = '17' } + buildFeatures { + viewBinding true + } } dependencies { @@ -42,6 +41,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.fragment:fragment-ktx:1.8.5' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9604b34..e17e9ba 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,6 +21,16 @@ + + + + \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/fragments/ActivityA.kt b/app/src/main/java/otus/gpb/homework/fragments/ActivityA.kt new file mode 100644 index 0000000..550b7a8 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/fragments/ActivityA.kt @@ -0,0 +1,16 @@ +package otus.gpb.homework.fragments + +import android.annotation.SuppressLint +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity + +class ActivityA: AppCompatActivity(R.layout.activity_a) { + + @SuppressLint("ResourceType") + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + supportFragmentManager.beginTransaction() + .add(R.id.containerActivityA, FragmentMainActivityA()) + .commit() + } +} \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/fragments/ActivityB.kt b/app/src/main/java/otus/gpb/homework/fragments/ActivityB.kt new file mode 100644 index 0000000..0990cf4 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/fragments/ActivityB.kt @@ -0,0 +1,26 @@ +package otus.gpb.homework.fragments + +import android.content.res.Configuration +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity + +class ActivityB: AppCompatActivity() { + + private val fragmentBA = FragmentBA() + private val fragmentBB = FragmentBB() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_b) + val fm = supportFragmentManager.beginTransaction() + fm.add(R.id.containerBA, fragmentBB) + fm.add(R.id.containerBB, fragmentBA) + if(resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { + fm.hide(fragmentBB) + } + fm.commit() + } + + fun getFragmentBA() = fragmentBA + fun getFragmentBB() = fragmentBB +} \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/fragments/FragmentA.kt b/app/src/main/java/otus/gpb/homework/fragments/FragmentA.kt new file mode 100644 index 0000000..900e5df --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/fragments/FragmentA.kt @@ -0,0 +1,41 @@ +package otus.gpb.homework.fragments + +import android.content.Context +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.View +import android.widget.Button +import androidx.activity.OnBackPressedCallback +import androidx.core.os.bundleOf +import androidx.fragment.app.setFragmentResult + +class FragmentA : Fragment(R.layout.fragment_a) { + + override fun onAttach(context: Context) { + super.onAttach(context) + val backPressedCallBack = object : OnBackPressedCallback(true) + { + override fun handleOnBackPressed() { + if(parentFragmentManager.backStackEntryCount <= 1) + requireActivity().finish() + } + } + requireActivity().onBackPressedDispatcher.addCallback(this, backPressedCallBack) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val button = view.findViewById