Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Рецепт взаимодействия
В этом примере показано, как использовать AndroidFragment и AndroidView в приложении Navigation3.
Функции
- AndroidFragment : показывает, как встроить фрагмент в составной целевой объект.
- AndroidView : демонстрирует, как встроить классический Android View в составной целевой объект.
Ключевые компоненты
-
InteropActivity : Основная активность, обеспечивающая навигацию. -
MyCustomFragment : Простой фрагмент, используемый в примере. -
AndroidFragment<T> : Объект типа Composable, содержащий фрагмент. -
AndroidView : Компонент, содержащий Android View.
Использование
- Запустите
InteropActivity . - На начальном экране отображается фрагмент.
- Нажмите «Перейти к виду», чтобы перейти к экрану с
TextView ).

Исследовать
Полный рецепт можно посмотреть на GitHub.
arrow_forward package com.example.nav3recipes.interop
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.Fragment
class MyCustomFragment : Fragment() {
@SuppressLint("SetTextI18n")
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return TextView(requireContext()).apply {
text = "My Fragment"
}
}
}package com.example.nav3recipes.interop
import android.annotation.SuppressLint
import android.os.Bundle
import android.widget.TextView
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.ui.Modifier
import androidx.compose.ui.viewinterop.AndroidView
import androidx.fragment.app.FragmentActivity
import androidx.fragment.compose.AndroidFragment
import androidx.lifecycle.compose.dropUnlessResumed
import androidx.navigation3.runtime.NavKey
import androidx.navigation3.runtime.entryProvider
import androidx.navigation3.runtime.rememberNavBackStack
import androidx.navigation3.ui.NavDisplay
import com.example.nav3recipes.ui.setEdgeToEdgeConfig
import kotlinx.serialization.Serializable
@Serializable
private data object FragmentRoute : NavKey
@Serializable
private data class ViewRoute(val id: String) : NavKey
class InteropActivity : FragmentActivity() {
@SuppressLint("SetTextI18n")
override fun onCreate(savedInstanceState: Bundle?) {
setEdgeToEdgeConfig()
super.onCreate(savedInstanceState)
setContent {
val backStack = rememberNavBackStack(FragmentRoute)
NavDisplay(
backStack = backStack,
onBack = { backStack.removeLastOrNull() },
entryProvider = entryProvider {
entry<FragmentRoute> {
Column(Modifier.fillMaxSize().wrapContentSize()) {
AndroidFragment<MyCustomFragment>()
Button(onClick = dropUnlessResumed {
backStack.add(ViewRoute("123"))
}) {
Text("Go to View")
}
}
}
entry<ViewRoute> { key ->
AndroidView(
modifier = Modifier.fillMaxSize().wrapContentSize(),
factory = { context ->
TextView(context).apply {
text = "My View with key: ${key.id}"
}
}
)
}
}
)
}
}
}
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2026-05-09 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2026-05-09 UTC."],[],[]]