Gezinme işlemlerini ve Parçalarını kullanma

Gezinme işlemlerini kullanarak parçalar arasında bağlantılar oluşturabilirsiniz. Gezinme eylemini çağırmak, kullanıcıyı bir hedeften diğerine götürür. Bu kılavuzda işlemlerin ne olduğu açıklanmakta ve bunları nasıl oluşturup kullanabileceğiniz gösterilmektedir.

Genel bakış

Her işlemin benzersiz bir kimliği vardır ve hedef gibi ek özellikler içerebilir. Hedef, kullanıcının işlemi tetiklediğinde kullanıcıyı hangi ekrana götüreceğini tanımlar. İşlem, verileri bir hedeften diğerine taşımak için bağımsız değişkenleri de kullanabilir.

Örnekler

<action> etiketlerini kullanarak gezinme grafiği XML dosyanızda işlemleri tanımlayın. Aşağıdaki snippet, FragmentA değerinden FragmentB değerine geçişi temsil eden bir işlem uygular.

<fragment
    android:id="@+id/fragmentA"
    android:name="com.example.FragmentA">
    <action
        android:id="@+id/action_fragmentA_to_fragmentB"
        app:destination="@id/fragmentB" />
</fragment>

Bu işlemi kullanarak gezinmek için NavController.navigate() yöntemini çağırın ve işlemin id değerini iletin:

navController.navigate(R.id.action_fragmentA_to_fragmentB)

Genel işlemler

Herhangi bir yerden bir hedefe gitmek için genel işlemleri kullanabilirsiniz.

Uygulamanızda birden fazla yoldan erişilebilen herhangi bir hedef için söz konusu hedefe giden karşılık gelen bir genel işlem tanımlayın.

Aşağıdaki örneği inceleyin. Hem results_winner hem de game_over hedeflerinin ev hedefine pop-up olması gerekir. action_pop_out_of_game işlemi, buna olanak tanır. action_pop_out_of_game, belirli bir parçanın dışındaki genel bir işlemdir. Bu, in_game_nav_graph içinde herhangi bir yere referansta bulunabileceğiniz ve çağırabileceğiniz anlamına gelir.

<?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/in_game_nav_graph"
   app:startDestination="@id/in_game">

   <!-- Action back to destination which launched into this in_game_nav_graph -->
   <action android:id="@+id/action_pop_out_of_game"
                       app:popUpTo="@id/in_game_nav_graph"
                       app:popUpToInclusive="true" />

   <fragment
       android:id="@+id/in_game"
       android:name="com.example.android.gamemodule.InGame"
       android:label="Game">
       <action
           android:id="@+id/action_in_game_to_resultsWinner"
           app:destination="@id/results_winner" />
       <action
           android:id="@+id/action_in_game_to_gameOver"
           app:destination="@id/game_over" />
   </fragment>

   <fragment
       android:id="@+id/results_winner"
       android:name="com.example.android.gamemodule.ResultsWinner" />

   <fragment
       android:id="@+id/game_over"
       android:name="com.example.android.gamemodule.GameOver"
       android:label="fragment_game_over"
       tools:layout="@layout/fragment_game_over" />

</navigation>