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.
- Güvenli Aramalar: İşlemleri kullanarak kaynak kimliklerini Güvenli Arg'lar tarafından oluşturulan işlemlerle değiştirerek derleme zamanı için ek güvenlik sağlayabilirsiniz.
- Animasyonlar: Hedefler arasındaki geçişleri de canlandırabilirsiniz. Daha fazla bilgi için Hedefler arasındaki geçişleri canlandırma başlıklı makaleye bakın.
Ö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>
Bir işlemi kullanarak gezinin
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>