From f4df66e9dea223f76a42a2ca5655a92c6e0303d7 Mon Sep 17 00:00:00 2001 From: jbwoods Date: Tue, 28 Oct 2025 20:28:07 +0000 Subject: [PATCH] Refactor Fragment-in-Compose snippet to use AndroidFragment Replaced the `AndroidViewBinding` implementation with the simpler `AndroidFragment` composable from the `androidx.fragment:fragment-compose` library. This change also includes: - Adding the `fragment-compose` dependency. - Removing the now-unused XML layout file for the fragment container. --- compose/snippets/build.gradle.kts | 1 + .../interop/InteroperabilityAPIsSnippets.kt | 7 ++---- .../main/res/layout/my_fragment_layout.xml | 23 ------------------- gradle/libs.versions.toml | 5 ++-- 4 files changed, 6 insertions(+), 30 deletions(-) delete mode 100644 compose/snippets/src/main/res/layout/my_fragment_layout.xml diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 7a5062f6..ac42cc6c 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -109,6 +109,7 @@ dependencies { implementation(libs.androidx.emoji2.views) implementation(libs.androidx.lifecycle.runtime.compose) + implementation(libs.androidx.fragment.compose) implementation(libs.androidx.fragment.ktx) implementation(libs.androidx.coordinator.layout) implementation(libs.google.android.material) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt index efad40fd..adbf7ed7 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt @@ -51,11 +51,11 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.viewinterop.AndroidView import androidx.compose.ui.viewinterop.AndroidViewBinding import androidx.fragment.app.Fragment +import androidx.fragment.compose.AndroidFragment import com.example.compose.snippets.MyActivity import com.example.compose.snippets.R import com.example.compose.snippets.databinding.ExampleLayoutBinding import com.example.compose.snippets.databinding.FragmentExampleBinding -import com.example.compose.snippets.databinding.MyFragmentLayoutBinding // [START android_compose_interop_apis_compose_in_views] class ExampleActivity : ComponentActivity() { @@ -272,10 +272,7 @@ fun AndroidViewBindingExample() { // [START android_compose_interop_apis_fragments_in_compose] @Composable fun FragmentInComposeExample() { - AndroidViewBinding(MyFragmentLayoutBinding::inflate) { - val myFragment = fragmentContainerView.getFragment() - // ... - } + AndroidFragment() } // [START_EXCLUDE silent] diff --git a/compose/snippets/src/main/res/layout/my_fragment_layout.xml b/compose/snippets/src/main/res/layout/my_fragment_layout.xml deleted file mode 100644 index 3b0ec276..00000000 --- a/compose/snippets/src/main/res/layout/my_fragment_layout.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5724109e..9c873ec3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ androidx-corektx = "1.17.0" androidx-credentials = "1.6.0-beta03" androidx-credentials-play-services-auth = "1.6.0-beta03" androidx-emoji2-views = "1.6.0" -androidx-fragment-ktx = "1.8.9" +androidx-fragment = "1.8.9" androidx-glance-appwidget = "1.1.1" androidx-lifecycle-compose = "2.9.4" androidx-lifecycle-runtime-compose = "2.9.4" @@ -128,7 +128,8 @@ androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", versi androidx-credentials = { module = "androidx.credentials:credentials", version.ref = "androidx-credentials" } androidx-credentials-play-services-auth = { module = "androidx.credentials:credentials-play-services-auth", version.ref = "androidx-credentials-play-services-auth" } androidx-emoji2-views = { module = "androidx.emoji2:emoji2-views", version.ref = "androidx-emoji2-views" } -androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment-ktx" } +androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", version.ref = "androidx-fragment" } +androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment" } androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidx-glance-appwidget" } androidx-glance-appwidget-testing = { module = "androidx.glance:glance-appwidget-testing", version.ref = "androidx-glance-appwidget" } androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidx-glance-appwidget" }