ナビゲーションとは
ユーザーがアプリ内のさまざまなコンテンツ間を移動する操作を指します。
(公式引用:https://developer.android.com/guide/navigation)
前提として、下記内容は実施しているとする
- Fragmentの作成
依存関係の宣言します
dependencies {
def nav_version = "2.3.2"
// Kotlin
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
// Feature module Support
implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"
// Testing Navigation
androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"
// Jetpack Compose Integration
implementation "androidx.navigation:navigation-compose:1.0.0-alpha03"
}
Resource Fileにナビゲーションを追加します
Android Resource Fileを選び、Resource typeをnagation
を選択します。
<?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/nagation">
</navigation>
ナビゲーショングラフにフラグメントを追加する
今回は、Navigation Editorを使用して、追加します。
説明については、公式を参照:
https://developer.android.com/guide/navigation/navigation-getting-started?hl=ja
- [New Destination]を押下、作成していたFragmento選択
下記のようなコードができる
<fragment
android:id="@+id/testFragment"
android:name="com.example.android.navigation.TestFragment"
android:label="TestFragment"
tools:layout="@layout/fragment_test" />
- destinationを接続する
<fragment
android:id="@+id/testFragment"
android:name="com.example.android.navigation.TestFragment"
android:label="fragment_test"
tools:layout="@layout/fragment_test" >
<action
android:id="@+id/action_testFragment_to_testTwoFragment"
app:destination="@id/testTwoFragment" />
</fragment>
<fragment
android:id="@+id/testTwoFragment"
android:name="com.example.android.navigation.TestTwoFragment"
android:label="fragment_test_two"
tools:layout="@layout/fragment_test_two" />
ボタンでユーザーを別の画面に移動させる
binding.nextButton.setOnClickListener{ view: View ->
view.findNavController().navigate(R.id.testTwoFragment)
}
特定のフラグメントから次のフラグメントへ移動する場合は、if/elseで条件を定義する方法もあります。
参考サイト:
https://developer.android.com/guide/navigation?hl=ja
https://developer.android.com/guide/navigation/navigation-getting-started?hl=ja
https://developer.android.com/guide/navigation/navigation-conditional?hl=ja