کنترلر ناوبری یکی از مفاهیم کلیدی در ناوبری است. این کنترلر گراف ناوبری را در خود نگه میدارد و متدهایی را ارائه میدهد که به برنامه شما اجازه میدهد بین مقاصد موجود در گراف حرکت کند.
هنگام استفاده از کامپوننت Navigation ، شما با استفاده از کلاس NavController یک کنترلر ناوبری ایجاد میکنید. NavController رابط برنامهنویسی کاربردی (API) ناوبری مرکزی است. این کامپوننت، مقصدهایی را که کاربر بازدید کرده است، ردیابی میکند و به کاربر اجازه میدهد بین مقاصد حرکت کند. این راهنما نحوه ایجاد یک NavController را در برنامه شما نشان میدهد.
برای اطلاعات بیشتر در مورد نحوه اضافه کردن یک گراف ناوبری به NavController خود، به بخش «طراحی گراف ناوبری» مراجعه کنید. NavController چندین روش مختلف برای پیمایش به مقاصد در گراف خود ارائه میدهد. برای اطلاعات بیشتر، به «پیمایش به یک مقصد» مراجعه کنید.
نوشتن
برای ایجاد یک NavController هنگام استفاده از Jetpack Compose، تابع rememberNavController() فراخوانی کنید:
val navController = rememberNavController()
شما باید NavController در سلسله مراتب composable خود در سطح بالا ایجاد کنید. این سطح باید به اندازهای بالا باشد که تمام composableهایی که نیاز به ارجاع به آن دارند، بتوانند این کار را انجام دهند.
انجام این کار به شما امکان میدهد از NavController به عنوان تنها منبع حقیقت برای بهروزرسانی composableها در خارج از صفحات خود استفاده کنید. این از اصول بالا بردن وضعیت (state hoisting) پیروی میکند.
بازدیدها
اگر از چارچوب رابط کاربری Views استفاده میکنید، میتوانید NavController خود را با استفاده از یکی از روشهای زیر، بسته به زمینه، بازیابی کنید:
کاتلین:
جاوا:
-
NavHostFragment.findNavController(Fragment) -
Navigation.findNavController(Activity, @IdRes int viewId) -
Navigation.findNavController(View)
معمولاً ابتدا یک NavHostFragment دریافت میکنید و سپس NavController از آن fragment بازیابی میکنید. قطعه کد زیر این موضوع را نشان میدهد:
کاتلین
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
جاوا
NavHostFragment navHostFragment =
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();
مطالعه بیشتر
- طراحی نمودار ناوبری : راهنمایی که نحوه اضافه کردن نمودار به
NavControllerشما را که شامل تمام مقاصد برنامه شما است، شرح میدهد. - حرکت به یک مقصد : راهنمایی که نحوه استفاده از
NavControllerبرای حرکت بین مقاصد در نمودار ناوبری شما را شرح میدهد.