Android navigasyonunda iletişim hedefi terimi, hedefleri ifade eder uygulamanın gezinme grafiğinde, diyalog pencereleri, Yer paylaşımlı uygulama kullanıcı arayüzü öğeleri ve içerikleri.
İletişim kutusu hedefleri,
ana makine iletişim kutusundayken, iletişimin nasıl
hedefler, NavController
'inizin arka yığınıyla etkileşime girer.
Oluşturulabilir iletişim kutusu
Compose'da iletişim kutusu hedefi oluşturmak için NavHost
cihazınıza hedef ekleyin
dialog()
işlevini kullanarak. Fonksiyon, temel olarak
composable
, bir barındırılan alan değil, yalnızca bir iletişim kutusu hedefi oluşturur.
hedef.
Aşağıdaki örneği inceleyin:
@Serializable
object Home
@Serializable
object Settings
@Composable
fun HomeScreen(onNavigateToSettings: () -> Unit){
Column {
Text("Home")
Button(onClick = onNavigateToSettings){
Text("Open settings")
}
}
}
// This screen will be displayed as a dialog
@Composable
fun SettingsScreen(){
Text("Settings")
// ...
}
@Composable
fun MyApp() {
val navController = rememberNavController()
NavHost(navController, startDestination = Home) {
composable<Home> { HomeScreen(onNavigateToSettings = { navController.navigate(route = Settings) }) }
dialog<Settings> { SettingsScreen() }
}
}
- Başlangıç hedefinde
Home
rotası kullanılır. Çünkücomposable()
bunu grafiğe ekler ve barındırılan bir hedeftir. - Diğer hedef,
Settings
rotasını kullanıyor.- Benzer şekilde,
dialog()
bunu grafiğe eklediği için bir iletişim kutusudur seçeceğiz. - Kullanıcı
HomeScreen
konumundanSettingsScreen
konumuna gittiğinde ikincisiHomeScreen
üzerinde görünür.
- Benzer şekilde,
SettingsScreen
, kendisi birDialog
composable'ı içermese de, bir iletişim kutusu hedefi olduğundan,NavHost
bunuDialog
.
İletişim kutusu hedefleri, NavHost
içinde önceki hedefin üzerinde görünür. Tekliflerinizi otomatikleştirmek ve optimize etmek için
Söz konusu iletişim kutusu, uygulamanızda kendi
yaşam döngüsü ve kayıtlı durumdan bağımsız olarak,
gezinme grafiğidir. AlertDialog
veya alakalı bir
gibi daha az karmaşık bir istem için bir iletişim kutusu istiyorsanız
onayı.
Kotlin DSL
Parçalarla çalışıyorsanız ve Kotlin DSL kullanıyorsanız grafiğinizi oluşturun. İletişim kutusu hedefi eklemek, Oluştur'u tıklayın.
Aşağıdaki snippet'te dialog()
işlevinin
parça kullanan bir iletişim kutusu hedefi ekleyin:
// Define destinations with serializable classes or objects
@Serializable
object Home
@Serializable
object Settings
// Add the graph to the NavController with `createGraph()`.
navController.graph = navController.createGraph(
startDestination = Home
) {
// Associate the home route with the HomeFragment.
fragment<HomeFragment, Home> {
label = "Home"
}
// Define the settings destination as a dialog using DialogFragment.
dialog<SettingsFragment, Settings> {
label = "Settings"
}
}
XML
Mevcut bir DialogFragment
öğeniz varsa <dialog>
öğesini kullanarak şu işlemleri yapın:
aşağıdaki örnekte gösterildiği gibi gezinme grafiğinize iletişim kutusu ekleyin:
<?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/nav_graph"> ... <dialog android:id="@+id/my_dialog_fragment" android:name="androidx.navigation.myapp.MyDialogFragment"> <argument android:name="myarg" android:defaultValue="@null" /> <action android:id="@+id/myaction" app:destination="@+id/another_destination"/> </dialog> ... </navigation>