डायलॉग डेस्टिनेशन

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() }
    }
}
  1. शुरू होने का डेस्टिनेशन, Home रूट का इस्तेमाल करता है. क्योंकि composable() इसे ग्राफ़ में जोड़ता है, यह एक होस्ट किया गया गंतव्य है.
  2. दूसरी मंज़िल Settings रूट का इस्तेमाल करती है.
    • इसी तरह, dialog() इसे ग्राफ़ में जोड़ता है, इसलिए यह एक डायलॉग होता है गंतव्य.
    • जब उपयोगकर्ता HomeScreen से SettingsScreen पर जाता है, तो बाद वाला HomeScreen से ज़्यादा दिखाई देता है.
  3. 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>