10. Global Actions

Global actions (eylemler), kitabımızın başından beri sözünü ettiğimiz destination'larla birlikte çalıştığımız başrol oyuncularımızdan biri. Bu başlıkta onun detaylarını inceleyeceğiz.

Birden çok hedefin (destination) kullanabileceği ortak bir eylem oluşturmak için genel bir eylem (global action) kullanabilirsiniz. Örneğin, farklı hedeflerdeki düğmelerin aynı ana uygulama ekranına gitmesini isteyebilirsiniz. Bu durumda global action tanımlamak doğru bir yaklaşım olacaktır.

Global action nasıl eklenir?

Bunun için tekrar örneğimize dönelim ve bir önceki derste hazırladığımız nested graph'a bir global action tanımlayalım.

1. Context menüsünü görüntülemek için hedefe sağ tıklayın.

2. Add Action > Global’i seçin. Hedefin solunda bir ok belirir.

3. XML metin görünümüne gitmek için Metin sekmesini tıklayın. Genel eylem için XML aşağıdakine benzer:

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

    <fragment
        android:id="@+id/blankFragment"
        android:name="com.etiya.jpnavigation1.BlankFragment"
        android:label="fragment_blank"
        tools:layout="@layout/fragment_blank">
        <action
            android:id="@+id/action_blankFragment_to_blankFragment2"
            app:destination="@id/navigation" />
        <action
            android:id="@+id/action_blankFragment_to_blankFragment4"
            app:destination="@id/blankFragment4" />
    </fragment>
    <fragment
        android:id="@+id/blankFragment4"
        android:name="com.etiya.jpnavigation1.BlankFragment4"
        android:label="fragment_blank_fragment4"
        tools:layout="@layout/fragment_blank_fragment4">
        <action
            android:id="@+id/action_blankFragment4_to_blankFragment5"
            app:destination="@id/blankFragment5" />
    </fragment>
    <fragment
        android:id="@+id/blankFragment5"
        android:name="com.etiya.jpnavigation1.BlankFragment5"
        android:label="fragment_blank_fragment5"
        tools:layout="@layout/fragment_blank_fragment5" />
    <navigation
        android:id="@+id/navigation"
        app:startDestination="@id/blankFragment2">
        <fragment
            android:id="@+id/blankFragment2"
            android:name="com.etiya.jpnavigation1.BlankFragment2"
            android:label="fragment_blank_fragment2"
            tools:layout="@layout/fragment_blank_fragment2">
            <action
                android:id="@+id/action_blankFragment2_to_blankFragment3"
                app:destination="@id/blankFragment3" />
        </fragment>
        <fragment
            android:id="@+id/blankFragment3"
            android:name="com.etiya.jpnavigation1.BlankFragment3"
            android:label="fragment_blank_fragment3"
            tools:layout="@layout/fragment_blank_fragment3" />
    </navigation>
    <action
        android:id="@+id/action_global_navigation"
        app:destination="@id/navigation" />
</navigation>

Yaptığımız ekleme işleminden sonra ana root içerisinde eklenen global action aşağıdaki gibi XML dosyasına eklenmiş oldu.

<action
        android:id="@+id/action_global_navigation"
        app:destination="@id/navigation" />

Last updated