> For the complete documentation index, see [llms.txt](https://egemen-mede.gitbook.io/jetpack-navigation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://egemen-mede.gitbook.io/jetpack-navigation/11.-talk-is-cheap-show-me-the-code/oernek-1-navcontroller-kullanarak-bir-hedef-noktasina-gitmek.md).

# Örnek-1: NavController Kullanarak Bir Hedef Noktasına Gitmek

Hafızamızı tazeleyelim. Konu anlatım bölümümüzde hazırladığımız örnekte iki akışımız bulunuyordu.

*blankFragment > blankFragment2 > blankFragment3* gidişini 1. Akış\
\&#xNAN;*blankFragment > blankFragment4 > blankFragment5* gidişini 2. Akış&#x20;

Biz 1. Akışta blankFragment2 ve blankFragment3'ü birleştirerek **Nested Graph** haline getirerek kapsüllemiştik. Birleştirdikten sonra aşağıdaki gibi **navigation** isimli **id**'ye sahip ve **startDestination**'ı **blankFragment2** olan bir **root** dizini oluşmuştu.

```markup
<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>
```

Bunun anlamı, bizim **NavController** ile bağlantı sağladığımızda **blankFragment2** sayfasına gitmesi gerektiğidir. O zaman hazırlıklarımızı yapalım.&#x20;

Öncelikle **fragment\_blank.xml** dosyasına gidelim ve aşağıdaki değişiklikleri yapalım.

```markup
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".BlankFragment">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/tvMessage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="@string/hello_blank_fragment"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" />

        <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            app:layout_constraintTop_toBottomOf="@id/tvMessage"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            android:text="Nested Graph'a Git" />

    </androidx.constraintlayout.widget.ConstraintLayout>

</FrameLayout>
```

**BlankFragment.kt** dosyasında da aşağıdaki gibi bir OnClick event'ı işletelim.

```kotlin
class BlankFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val rootView: View =
            inflater.inflate(R.layout.fragment_blank, container, false)

        rootView.findViewById<Button>(R.id.btn).setOnClickListener {
            findNavController().navigate(R.id.navigation)
        }

        return rootView
    }
}
```

Dikkat ettiyseniz navigate ettiğimiz durumda gideceğimiz sayfaya hazırladığımız **navigation** isimli **nested graph**'ın **id**'sini verdik. Biz bu şekilde yapmış olsak da sistem, **nested graph** üzerinde **startDestination**'da tanımlı olan **destination**'a gidecek.

![BlankFragment](/files/-M-FMfftEZYIiBx803Qq)

"**Nested Graph'a Git**" butonuna basıldıktan sonra da aşağıdaki gibi **BlankFragment2** görüntüleniyor.

![BlankFragment2](/files/-M-FMz4er1bk7FmQxvFk)

Biliyorsunuz destination'ları nested graph haline çevirmenin bir kapsülleme işlemi olduğunu belirtmiş ve kapsülün içerisindeki diğer destination'lara erişimin direkt yapılamayacağından söz etmiştik.

Bunun için örneğimi aşağıdaki gibi düzenleyip, bu sefer OnClick event'ını kapsülün içerisindeki diğer fragment olan BlankFragment3'e veriyorum.

```kotlin
rootView.findViewById<Button>(R.id.btn).setOnClickListener {
    findNavController().navigate(R.id.blankFragment3)
}
```

Ancak uygulamam aşağıdaki hatayı verip kapanıyor.

**blankFragment3 is unknown to this NavController**

Bunun sebebi **NavController**'ın **blankFragment3** isimli bir **destination**'ı tanımıyor olmasından kaynaklanıyor. Sebebi ise **navigation** isimli **nested graph** içerisinde yer alıyor olması. Çünkü **nested graph** kapsüllenerek çalışan bir sistem ve yalnızda **startDestination** üzerinde tanımlanan destination'a direkt erişim izni sağlar. Bunu da yalnızca **nested graph id**'si üzerinden gerçekleştirir. Yani aynı örneğimdeki OnClick event'ını direkt olarak **BlankFragment2**'ye de versem aynı hatayı alırdım.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://egemen-mede.gitbook.io/jetpack-navigation/11.-talk-is-cheap-show-me-the-code/oernek-1-navcontroller-kullanarak-bir-hedef-noktasina-gitmek.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
