Android नेविगेशन में, डायलॉग डेस्टिनेशन शब्द का मतलब डेस्टिनेशन से है ऐप्लिकेशन के नेविगेशन ग्राफ़ में, जो डायलॉग विंडो का रूप ले लेता है, ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) एलिमेंट और कॉन्टेंट को ओवरले करना.
क्योंकि डायलॉग डेस्टिनेशन होस्ट किए गए डेस्टिनेशन पर दिखते हैं. इन डेस्टिनेशन पर,
होना चाहिए, तो कुछ ज़रूरी बातों का ध्यान रखना होगा कि डायलॉग कैसे
डेस्टिनेशन आपके NavController
के पिछली स्टैक से इंटरैक्ट करते हैं.
डायलॉग कंपोज़ेबल
'लिखें' विंडो में डायलॉग का डेस्टिनेशन बनाने के लिए, अपने NavHost
में डेस्टिनेशन जोड़ें
dialog()
फ़ंक्शन का इस्तेमाल करके. फ़ंक्शन इस तरह काम करता है
composable
, सिर्फ़ यह होस्ट किए गए यूआरएल के बजाय डायलॉग डेस्टिनेशन बनाता है
डेस्टिनेशन.
यह उदाहरण देखें:
@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() }
}
}
- शुरू होने का डेस्टिनेशन,
Home
रूट का इस्तेमाल करता है. क्योंकिcomposable()
इसे ग्राफ़ में जोड़ता है, यह एक होस्ट किया गया गंतव्य है. - दूसरी मंज़िल
Settings
रूट का इस्तेमाल करती है.- इसी तरह,
dialog()
इसे ग्राफ़ में जोड़ता है, इसलिए यह एक डायलॉग होता है गंतव्य. - जब उपयोगकर्ता
HomeScreen
सेSettingsScreen
पर जाता है, तो बाद वालाHomeScreen
से ज़्यादा दिखाई देता है.
- इसी तरह,
SettingsScreen
मेंDialog
कंपोज़ेबल शामिल नहीं है, लेकिन क्योंकि यह एक डायलॉग गंतव्य है, इसलिएNavHost
इसेDialog
.
डायलॉग डेस्टिनेशन, NavHost
में पिछले डेस्टिनेशन पर दिखते हैं. इस्तेमाल की जाने वाली चीज़ें
जब डायलॉग आपके ऐप्लिकेशन में कोई ऐसी अलग स्क्रीन दिखाता हो जिसे इसकी अपनी ज़रूरत हो
लाइफ़साइकल और सेव की गई स्थिति, जो आपके
नेविगेशन ग्राफ़. आप AlertDialog
या इससे जुड़ी जानकारी का इस्तेमाल कर सकते हैं
यह तब कंपोज़ किया जा सकता है, जब आपको कम मुश्किल प्रॉम्प्ट के लिए डायलॉग चाहिए, जैसे कि
पुष्टि करने के लिए.
Kotlin डीएसएल
अगर फ़्रैगमेंट का इस्तेमाल किया जा रहा है और Kotlin DSL का इस्तेमाल किया जा रहा है, तो अपना ग्राफ़ बनाना, डायलॉग गंतव्य जोड़ना काफ़ी मिलता-जुलता है लिखें.
ध्यान दें कि नीचे दिए गए स्निपेट में, कैसे dialog()
फ़ंक्शन का इस्तेमाल इन कामों के लिए भी किया जाता है
कोई ऐसा डायलॉग डेस्टिनेशन जोड़ें जो फ़्रैगमेंट का इस्तेमाल करता है:
// 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
अगर आपके पास कोई मौजूदा DialogFragment
है, तो <dialog>
एलिमेंट का इस्तेमाल करके
अपने नेविगेशन ग्राफ़ में डायलॉग जोड़ें, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
<?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>