با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
دستور العمل اولیه DSL
این دستورالعمل یک مثال ابتدایی از نحوه استفاده از API ناوبری ۳ با دو صفحه نمایش، با استفاده از entryProvider DSL و یک back stack پایدار را نشان میدهد.
چگونه کار میکند؟
این مثال مشابه دستور اصلی است، اما با چند تفاوت کلیدی:
پشته پشتی پایدار : از rememberNavBackStack(RouteA) برای ایجاد و به خاطر سپردن پشته پشتی استفاده میکند. این باعث میشود پشته پشتی در طول تغییرات پیکربندی (مثلاً چرخش صفحه) پایدار بماند. برای استفاده از rememberNavBackStack ، کلیدهای ناوبری باید قابلیت سریالی شدن داشته باشند، به همین دلیل است که RouteA و RouteB با @Serializable حاشیهنویسی شدهاند و رابط NavKey پیادهسازی میکنند.
entryProvider DSL : به جای دستور when ، این مثال از entryProvider DSL برای تعریف محتوای هر مسیر استفاده میکند. تابع entry<RouteType> برای مرتبط کردن یک نوع مسیر با محتوای قابل ترکیب آن استفاده میشود.
منطق ناوبری همچنان یکسان است: برای پیمایش از RouteA به RouteB ، یک نمونه RouteB به پشته پشتی اضافه میکنیم.

کاوش
دستور پخت کامل را در گیتهاب ببینید.
arrow_forward /*
* Copyright 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.nav3recipes.basicdsl
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Button
import androidx.compose.material3.Text
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.content.ContentBlue
import com.example.nav3recipes.content.ContentGreen
import com.example.nav3recipes.ui.setEdgeToEdgeConfig
import kotlinx.serialization.Serializable
@Serializable
private data object RouteA : NavKey
@Serializable
private data class RouteB(val id: String) : NavKey
class BasicDslActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setEdgeToEdgeConfig()
super.onCreate(savedInstanceState)
setContent {
val backStack = rememberNavBackStack(RouteA)
NavDisplay(
backStack = backStack,
onBack = { backStack.removeLastOrNull() },
entryProvider = entryProvider {
entry<RouteA> {
ContentGreen("Welcome to Nav3") {
Button(onClick = dropUnlessResumed {
backStack.add(RouteB("123"))
}) {
Text("Click to navigate")
}
}
}
entry<RouteB> { key ->
ContentBlue("Route id: ${key.id} ")
}
}
)
}
}
}
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2026-05-06 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-06 بهوقت ساعت هماهنگ جهانی."],[],[]]