Android рдиреЗрд╡рд┐рдЧреЗрд╢рди рдШрдЯрдХред рд╕рд░рд▓ рдЪреАрдЬреЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдЦреБрдж рдХрд░рдиреА рд╣реИрдВ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдореИрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдШрдЯрдХ рдХреЗ рдХрд╛рдо рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЕрд╕реНрдкрд╖реНрдЯ рдЫрд╛рдк рдорд┐рд▓реАред

рдпрд╣ рдЖрд▓реЗрдЦ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрдИ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ (рдЕрдиреБрд╡рд╛рдж рднреА рд╣реИрдВ) - рд╡реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред

рдЫрд╡рд┐

рдореБрдЭреЗ рддреБрд░рдВрдд рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЙрдкрдпреЛрдЧреА рдорд╛рдирддрд╛ рд╣реВрдВ рдФрд░ рджреБрд░реБрдкрдпреЛрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╢рд╛рдпрдж рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдм рдХреБрдЫ рдЖрдЬрдорд╛рдпрд╛ред

рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдВ рдРрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ рдкреВрд░реА рдирд╣реАрдВ рд╣реБрдИрдВ:

  • рдиреЗрд╡рд┐рдЧреЗрд╢рди рджрд░рд╛рдЬ рдореЗрдВ рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛
  • рдЕрдкрдиреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдЦреЛрдЬ
  • рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛

рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ


рдпрд╣ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрдгрдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдЖрдкрдХреЛ рдмрд╕ рдореЗрдиреВ рдЖрдЗрдЯрдо рдЖрдИрдбреА рдХреЛ рд╕рдорд╛рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

activity_main_drawer.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:showIn="navigation_view"> <group android:checkableBehavior="single"> <item android:id="@+id/importFragment" android:icon="@drawable/ic_menu_camera" android:title="Import"/> <item android:id="@+id/galleryFragment" android:icon="@drawable/ic_menu_gallery" android:title="Gallery"/> <item android:id="@+id/slideshowFragment" android:icon="@drawable/ic_menu_slideshow" android:title="Slideshow"/> <!--    --> 


рдФрд░ рд╕реНрдХреНрд░реАрди рдЖрдИрдбреА (рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл рдореЗрдВ рдЧрдВрддрд╡реНрдп)

mobile_navigation.xml
 <?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" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mobile_navigation" app:startDestination="@id/importFragment"> <fragment android:id="@+id/importFragment" android:name="com.xiii.navigationapplication.ImportFragment" android:label="fragment_import" tools:layout="@layout/fragment_import"/> <fragment android:id="@+id/galleryFragment" android:name="com.xiii.navigationapplication.GalleryFragment" android:label="fragment_gallery" tools:layout="@layout/fragment_gallery"/> <fragment android:id="@+id/slideshowFragment" android:name="com.xiii.navigationapplication.SlideshowFragment" android:label="fragment_slideshow" tools:layout="@layout/fragment_slideshow"/> </navigation> 


рддрдм рдЖрдкрдХреЛ рдореЗрдиреВ рдХреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

MainActivity.kt
 class MainActivity : AppCompatActivity() { private val navController by lazy(LazyThreadSafetyMode.NONE) { Navigation.findNavController(this, R.id.nav_host_fragment) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar) //   ""  toolbar NavigationUI.setupWithNavController(toolbar, navController, drawer_layout) //      nav_view.setupWithNavController(navController) } //     override fun onSupportNavigateUp() = navController.navigateUp() } 


рдореЗрдиреВ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ - рдХреНрдпрд╛ рдпрд╣ рдЪрдорддреНрдХрд╛рд░ рдирд╣реАрдВ рд╣реИ?

рдореЗрдиреВ рдиреЗрд╡рд┐рдЧреЗрд╢рди

"рд╣реИрдордмрд░реНрдЧрд░" (рдореЗрдиреВ рдЖрдЗрдХрди) рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЬрдм рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреЛ "рдмреИрдХ" рдмрдЯрди рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд╕рд╛рдорд╛рдиреНрдп рд▓рдЧ рд░рд╣рд╛ рдерд╛ ( рдкрд░рд┐рдЪрд┐рдд - рдкреНрд▓реЗ рдорд╛рд░реНрдХреЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рддрд░рд╣) рдФрд░, рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖ?

рд╡рд╣ рд╕рдм рд╣реИ! рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ (рдЕрд░реНрдерд╛рддреН: рдЕрдВрдХ рджреЛ рдФрд░ рддреАрди ) рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ "рд╣реИрдордмрд░реНрдЧрд░" рдХреЛ рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрдд , рдпрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдкрд┐рдЫрд▓рд╛ рдмрдЯрди рд╕реНрдЯрд╛рд░реНрдЯрдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЧрдВрддрд╡реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ ( addOnNavigatedListener () ) рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЪрд╛рд▓реЗрдВ рд▓рдЧрд╛рдХрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рд╡рд░реНрдгрди рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╢рд░реНрддреЛрдВ рдкрд░ рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрдХ рдирдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЦреЛрд▓рдирд╛


рдЧрддрд┐рд╡рд┐рдзрд┐ рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣реЛрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдЧрдВрддрд╡реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреА рд╣реИ ред рдиреЗрд╕реНрдЯреЗрдб рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдЦреЛрд▓рдирд╛ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ , рдпрд╛рдиреА рдПрдХ рдХреЙрд▓:

 navController.navigate(R.id.editActivity) 

рд╕рдВрдХреНрд░рдордг (рдЦрдВрдбреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХреЛ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдиреБрд░реЛрдзрд┐рдд рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдЦреЛрд▓ рджреЗрдЧрд╛ред
рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдЬрдм рд▓рдХреНрд╖реНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реНрд╡рдпрдВ рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣реЛрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд╡рд┐рдХрд▓реНрдк 2:

рдиреЗрд╡рд┐рдЧреЗрд╢рди рдпреЛрдЬрдирд╛

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЗрдП рдиреЛрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рджреЗрдЦреЗрдВред рдЗрд╕рдореЗрдВ EditFragment input рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдЯреБрдХрдбрд╝рд╛ рд╣реЛрдЧрд╛; рдпрд╣ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ startDestination рд╣реЛрдЧрд╛ред рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдПрдХ рдлреЛрдЯреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдХреИрдорд░рд╛ рд╕реЗ рдПрдХ рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PhotoFragment рдкрд░ рдЬрд╛рдПрдВрдЧреЗред рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

edit_navigation.xml
 <?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" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/edit_navigation" app:startDestination="@id/editFragment"> <fragment android:id="@+id/editFragment" android:name="com.xiii.navigationapplication.ui.edit.EditFragment" android:label="fragment_edit" tools:layout="@layout/fragment_edit"> <action android:id="@+id/action_editFragment_to_photoFragment" app:destination="@id/photoFragment"/> </fragment> <fragment android:id="@+id/photoFragment" android:name="com.xiii.navigationapplication.ui.edit.PhotoFragment" android:label="fragment_photo" tools:layout="@layout/fragment_photo"/> </navigation> 


EditActivity MainActivity рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ EditActivity рдкрд░ рдХреЛрдИ рдореЗрдиреВ рдирд╣реАрдВ рд╣реИ:

EditActivity.kt
 class EditActivity : AppCompatActivity() { private val navController by lazy(LazyThreadSafetyMode.NONE) { Navigation.findNavController(this, R.id.nav_host_fragment) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_edit) setSupportActionBar(toolbar) //    ""  toolbar NavigationUI.setupWithNavController(toolbar, navController) } override fun onSupportNavigateUp() = navController.navigateUp() fun takePhoto(view: View) { navController.navigate(R.id.action_editFragment_to_photoFragment) } } 


рдЧрддрд┐рд╡рд┐рдзрд┐ рдЦреБрд▓рддреА рд╣реИ, рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

рдЧрддрд┐рд╡рд┐рдзрд┐ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ

рдлрд┐рд░ рд╕реЗ, рдЯреВрд▓рдмрд╛рд░ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрдЯрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рд╢реБрд░реБрдЖрддреА EditFragment рдкрд░ "рдмреИрдХ рдЯреВ рдкреИрд░реЗрдВрдЯ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА" рдмрдЯрди рдирд╣реАрдВ рд╣реИ (рд▓реЗрдХрд┐рди рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛)ред рдкреНрд░рд▓реЗрдЦрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдХрд╛рдиреВрдиреА рд╣реИ: рдПрдХ рдирдпрд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл, рдПрдХ рдирдпрд╛ рдкреНрд░рд╛рд░рдВрдн рдореВрд▓реНрдп, "рдмреИрдХ" рдмрдЯрди рдХреЛ рдкреНрд░рд╛рд░рдВрдн , рдЕрдВрдд рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЬреЛ рд▓реЛрдЧ рдЕрднрд┐рднрд╛рд╡рдХреЛрдВ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЗрд╕ рдмреИрд╕рд╛рдЦреА рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

1. рдкреНрд░рдХрдЯ рдореЗрдВ рдореВрд▓ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
 <activity android:name=".EditActivity" android:parentActivityName=".MainActivity" android:theme="@style/AppTheme.NoActionBar"> <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity> 


2. рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЖрдИрдбреА рд╢реБрд░реБрдЖрдд рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗ
 class EditActivity : AppCompatActivity() { private val navController by lazy(LazyThreadSafetyMode.NONE) { Navigation.findNavController(this, R.id.nav_host_fragment) } private var isStartDestination = true override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_edit) setSupportActionBar(toolbar) val startDestinationId = navController.graph.startDestination //    id,  NavigationUI.ActionBarOnNavigatedListener     //      destination    startDestination navController.addOnNavigatedListener { controller, destination -> isStartDestination = destination.id == startDestinationId // R.id.fake_start_destination  id        controller.graph.startDestination = if (isStartDestination) R.id.fake_start_destination else startDestinationId } //    ""  toolbar NavigationUI.setupActionBarWithNavController(this, navController) } override fun onSupportNavigateUp(): Boolean { //  startDestination      Navigation Component return if (isStartDestination) super.onSupportNavigateUp() else navController.navigateUp() } fun takePhoto(view: View) { navController.navigate(R.id.action_editFragment_to_photoFragment) } } 


рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдиреИрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдПред ActionBarOnNavigatedListener рд╕рднреА рдЧрдВрддрд╡реНрдп рдкреНрд░рд╛рд░рдВрдн рди рд╣реЛрдВ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, NavigationUI.ActionBarOnNavigatedListener рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрдЯрди (рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХрд╛ рд╕рдВрджрд░реНрдн) рдХреЛ рдЫрд┐рдкрд╛рдПрдЧрд╛ рдирд╣реАрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЗрд╕ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ onSupportNavigateUp () рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗ рд╡рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдпрд╣ рдХрд╣рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рдпрджрд┐ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╣рд╕реНрддрдХреНрд╖реЗрдк рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЧрд╣рд░реА рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ)ред

рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛


рдиреЗрд╡реАрдЧреЗрд╢рди рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдПрдХ рдЧрдВрддрд╡реНрдп рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реИ ред рдХреЛрдб рдЬрдирд░реЗрд╢рди (рдЦрд░рд╛рдм рдирд╣реАрдВ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯрд╛рдЗрдк рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рднреА рд╣реИред

рдЕрдм рд╣рдо рдорд╛рдорд▓реЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдареЛрд╕ рдкрд╛рдВрдЪ рдирд╣реАрдВ рд░рдЦ рд╕рдХрд╛ред

рдЬрдм рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо EditActivity рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрдИрдбреА - рдЪрд▓реЛ рдЗрд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ:

1. EditActivity рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВ
рдореИрдВрдиреЗ рдЧреНрд░рд╛рдлрд╝ (рдиреЗрд╡рд┐рдЧреЗрд╢рди) рдХреЗ рдореВрд▓ рддрддреНрд╡ рдореЗрдВ рд╕реАрдзреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рд╛, рд▓реЗрдХрд┐рди рд▓рдХреНрд╖реНрдп рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ, рдХреЗрд╡рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдмрджрд▓ рдЬрд╛рдПрдЧреАред

 <?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" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/edit_navigation" app:startDestination="@id/editFragment"> <argument android:name="id" app:argType="integer"/> <fragment android:id="@+id/editFragment" android:name="com.xiii.navigationapplication.ui.edit.EditFragment" android:label="fragment_edit" tools:layout="@layout/fragment_edit"> <action android:id="@+id/action_editFragment_to_photoFragment" app:destination="@id/photoFragment"/> </fragment> <fragment android:id="@+id/photoFragment" android:name="com.xiii.navigationapplication.ui.edit.PhotoFragment" android:label="fragment_photo" tools:layout="@layout/fragment_photo"/> </navigation> 


2. рдПрдХреНрд╢рди рдХреЛ рдореБрдЦреНрдп рдЧреНрд░рд╛рдл рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
рдореИрдВрдиреЗ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдХреЗрд╡рд▓ рдЗрд╕рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗред

 <?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" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mobile_navigation" app:startDestination="@id/importFragment"> <fragment android:id="@+id/importFragment" android:name="com.xiii.navigationapplication.ImportFragment" android:label="fragment_import" tools:layout="@layout/fragment_import"> <action android:id="@+id/add" app:destination="@id/editActivity"> <argument android:name="id" app:argType="integer" android:defaultValue="0"/> </action> <action android:id="@+id/edit" app:destination="@id/editActivity"> <argument android:name="id" app:argType="integer"/> </action> </fragment> <fragment android:id="@+id/galleryFragment" android:name="com.xiii.navigationapplication.GalleryFragment" android:label="fragment_gallery" tools:layout="@layout/fragment_gallery"/> <fragment android:id="@+id/slideshowFragment" android:name="com.xiii.navigationapplication.SlideshowFragment" android:label="fragment_slideshow" tools:layout="@layout/fragment_slideshow"/> <activity android:id="@+id/editActivity" android:name="com.xiii.navigationapplication.EditActivity" android:label="activity_edit" tools:layout="@layout/activity_edit"/> </navigation> 


3. рдкреИрд░рд╛рдореАрдЯрд░ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, ImportFragmentDirections рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╕реБрд░рдХреНрд╖рд┐рдд-args рд╡рд░реНрдЧ рд╣реИред

 val direction = ImportFragmentDirections.edit(123 /* id  */) navController.navigate(direction) 


3. рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
 class EditFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { //    ,  fragment     startDestination // val id = EditFragmentArgs.fromBundle(arguments) val id = EditFragmentArgs.fromBundle(requireActivity().intent.extras) return inflater.inflate(R.layout.fragment_edit, container, false) } } 


рдЖрдк, EditFragment рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ ред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдкрд╛рджрд┐рдд рдХреНрд░рд┐рдпрд╛ (рдмрд┐рдВрджреБ 1 рд╕реЗ), EditActivity рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ , рдФрд░ рдЗрд╕рдХреЗ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рд▓рд╛рд▓рдЪреА рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕реЗ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдирд╣реАрдВ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, navController.graph.setDefaultArguments () ) рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗред рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдХреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред StackOwerflow рдкрд░ рдПрдХ рддрд░реАрдХрд╛ рд╡рд░реНрдгрд┐рдд рд╣реИред

рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдмрдбрд╝реА рдХрдард┐рдирд╛рдИ рддрдм рдкреИрджрд╛ рд╣реЛрдЧреА рдЬрдм рдПрдХ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдЧрдВрддрд╡реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣реА рд╣реИ, рдЬрдм рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдЗрд╕ рдЧреНрд░рд╛рдл рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЧрдВрддрд╡реНрдп рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХрд╣рд╛рдВ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдП: рддрд░реНрдХреЛрдВ рд╕реЗ рдпрд╛ рдЗрд░рд╛рджреЗ рд╕реЗред рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред



рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░, рд╕реБрд╡рд┐рдзрд╛ рдХреА рд╕реВрдЪреАрдмрджреНрдз рдХрдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореБрдЭреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рдПрдЧреА, рдХрдо рд╕реЗ рдХрдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд╕рд╛рдеред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдкрдХрд╛ рдХрд╛рдо рдХреЛрдб!

рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░ GitHub рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред

Source: https://habr.com/ru/post/hi429152/


All Articles