Android Kotlin基礎講座 03.2: ナビゲーションパスを定義する
目次
- ページ1
- この講座について
- イントロダクション
- 前提知識
- この講座で学べること
- 概要
- 完全無料で通えるプログラミングスクール
- ページ2
- 2.アプリの概観
- ページ3
- タスク:プロジェクトにナビゲーションコンポーネントを追加する
- ページ4
- タスク:NavHostFragmentを作成する
- ページ5
- タスク:ナビゲーショングラフにフラグメントを追加する
- ページ6
- タスク:条件付きナビゲーションを追加する
- ページ7
- タスク:戻るボタンの遷移先を変更する
- ページ8
- タスク:アプリバーにアップボタンを追加する
- ページ9
- タスク:オプションメニューを追加する
- ページ10
- タスク:ナビゲーションドロワーを追加する
- 完成済みプロジェクト
- ページ11
- まとめ
- おすすめ書籍
タスク:ナビゲーショングラフにフラグメントを追加する
このタスクではナビゲーショングラフにタイトルフラグメントとゲームフラグメントを追加します。それらのフラグメントをお互いに接続させます。その後、ユーザーがタイトル画面からゲーム画面に遷移できるようにするためのクリックハンドラーをPlayボタンに追加します。
ステップ1:ナビゲーショングラフに二つのフラグメントを追加し、それらをアクションで繋ぐ
- navigationリソースフォルダーからnavigation.xmlを開いてください。ナビゲーションエディター内で、New Destinationボタン をクリックしてください。フラグメントとアクティビティのリストが表示されます。
- fragment_titleを選択してください。TitleFragmentはユーザーがアプリを開いたときに最初に表示されるフラグメントなので、はじめにfragment_titleを追加していきます。
- GameFragmentを追加するためにNew Destinationボタンを押してください。
もしプレビューに”Preview Unavailable”というメッセージが表示されている場合、Textタブをクリックしてfragment要素のgameFragmentが以下のようにtools:layout=”@layout/fragment_game”を含んでいるか確認してください。
<!-- The game fragment within the navigation XML, complete with tools:layout. -->
<fragment
android:id="@+id/gameFragment"
android:name="com.example.android.navigation.GameFragment"
android:label="GameFragment"
tools:layout="@layout/fragment_game" />
- レイアウトエディターで、gameFragmentをtitleFragmentの右側にドラッグしてください。
- プレビュー上でカーソルをtitleFragmentの上に置いてください。丸い接続点がフラグメントビューの右側に表示されます。接続点をクリックしてgameFragmentの上にドラッグしてください。これで二つのフラグメントをつなぐアクションが生成されました。
- アクションの属性を確認するために、二つのフラグメントを繋いでいる線をクリックしてください。アトリビュートパネルのIDがaction_titleFragment_to_gameFragmentになっていることを確認してください。
ステップ2:Playボタンにクリックハンドラーを追加する
タイトルフラグメントはアクションによってゲームフラグメントに接続されました。これからタイトル画面に表示されるPlayボタンを押すとゲーム画面に遷移するように実装していきます。
- TitleFragment.ktファイルを開いてください。onCreateView()メソッドの中のreturn文の前に以下のコードを追加してください。
binding.playButton.setOnClickListener{}
- setOnClickListenerの中に、bindingクラスを通してPlayボタンにアクセスし、ゲームフラグメントに遷移させるコードを追加します。
//The complete onClickListener with Navigation
binding.playButton.setOnClickListener { view : View ->
view?.findNavController().navigate(R.id.action_titleFragment_to_gameFragment)
}
- アプリをビルドして必要なインポート文が全て含まれていることを確認してください。例として、以下のインポート文などが必要になります。
import androidx.navigation.findNavController
- アプリを起動してPlayボタンを押してみてください。ゲーム画面に遷移します。