Android Kotlin基礎講座 03.2: ナビゲーションパスを定義する
目次
- ページ1
- この講座について
- イントロダクション
- 前提知識
- この講座で学べること
- 概要
- 完全無料で通えるプログラミングスクール
- ページ2
- 2.アプリの概観
- ページ3
- タスク:プロジェクトにナビゲーションコンポーネントを追加する
- ページ4
- タスク:NavHostFragmentを作成する
- ページ5
- タスク:ナビゲーショングラフにフラグメントを追加する
- ページ6
- タスク:条件付きナビゲーションを追加する
- ページ7
- タスク:戻るボタンの遷移先を変更する
- ページ8
- タスク:アプリバーにアップボタンを追加する
- ページ9
- タスク:オプションメニューを追加する
- ページ10
- タスク:ナビゲーションドロワーを追加する
- 完成済みプロジェクト
- ページ11
- まとめ
- おすすめ書籍
タスク:アプリバーにアップボタンを追加する
アプリバー
アプリバーはアクションバーとも呼ばれ、アプリのブランディングと識別に有用なスペースです。アプリバーの色を設定することもできます。アプリバーはオプションメニューのような馴染みのあるナビゲーションツールをユーザーに提供します。アプリバーからオプションメニューにアクセスするには、縦に並んだ三つの点のアイコンをタップします。
アプリバーには画面ごとに変更できるタイトル文字を表示させることができます。AndroidTriviaアプリのタイトル画面では、アプリバーはAndroid Triviaと表示しています。問題画面では、タイトル文字にユーザーがどの段階にいるのかを伝えるために(“1/3,” “2/3,” “3/3.”)を表示しています。
アップボタン
現在の段階では、前画面に戻るためにはユーザーはシステムの戻るボタンを使う仕様になっています。しかしながら、Androidアプリは画面上、アプリバーの左上部にアップボタンを表示することもできます。
AndroidTriviaアプリでは、タイトル画面をのぞく全ての画面にアップボタンを表示させます。タイトル画面はアプリの画面ヒエラルキーにおいてトップにあるので、ユーザーがタイトル画面に遷移した場合はアップボタンを非表示にします。
アップボタンとシステムの戻るボタン:
- アップボタンは以下のスクリーンショットの1で表示されるアプリバーにあるボタンです。
- アップボタンはアプリ内においてのみ、画面間のヒエラルキー関係に基づいた画面遷移を行います。アップボタンではアプリの外(通常はホーム画面)に遷移させることはありません。
- 戻るボタンはスクリーンショットの2で表示されたシステムナビゲーションバーに表示されたボタンです。機種によっては画面外の物理ボタンである場合もあります。アプリに依存していません。
- 戻るボタンはユーザーが直近で遷移した画面の履歴(バックスタック)を遡るように遷移させます。
アップボタン用サポートを追加する
ナビゲーションコンポーネントにはNavigationUIというUIライブラリが含まれます。ナビゲーションコントローラーによってアプリバーにアップボタンの挙動が実装されるので、自身で行う必要はありません。
以下の手順でナビゲーションコントローラーを使ってアプリにアップボタンを追加できます。
- MainActivity.ktを開いてください。onCreate()メソッドの中にナビゲーションコントローラーオブジェクトを見つけるためのコードを追加してください。
val navController = this.findNavController(R.id.myNavHostFragment)
- さらにonCreate()メソッドの中に、ナビゲーションコントローラーとアプリバーをリンクさせるコードを追加してください。
NavigationUI.setupActionBarWithNavController(this,navController)
- onCreate()メソッドの後に、ナビゲーションコントローラーのnavigateUp()を呼び出すために、onSupportNavigateUp()をオーバーライドしてください。
override fun onSupportNavigateUp(): Boolean {
val navController = this.findNavController(R.id.myNavHostFragment)
return navController.navigateUp()
}
- アプリを起動してください。タイトル画面をのぞく全ての画面にアップボタンが表示されるようになりました。アプリ内のどこにいても、アップボタンを利用してタイトル画面に戻ることができます。