Android Kotlin基礎講座 03.2: ナビゲーションパスを定義する

アイキャッチ画像 Android Kotlin基礎講座

目次

タスク:ナビゲーショングラフにフラグメントを追加する

このタスクではナビゲーショングラフにタイトルフラグメントとゲームフラグメントを追加します。それらのフラグメントをお互いに接続させます。その後、ユーザーがタイトル画面からゲーム画面に遷移できるようにするためのクリックハンドラーをPlayボタンに追加します。

ステップ1:ナビゲーショングラフに二つのフラグメントを追加し、それらをアクションで繋ぐ

  1. navigationリソースフォルダーからnavigation.xmlを開いてください。ナビゲーションエディター内で、New Destinationボタン をクリックしてください。フラグメントとアクティビティのリストが表示されます。
  2. fragment_titleを選択してください。TitleFragmentはユーザーがアプリを開いたときに最初に表示されるフラグメントなので、はじめにfragment_titleを追加していきます。




  3. 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" />
  1. レイアウトエディターで、gameFragmentをtitleFragmentの右側にドラッグしてください。

  1. プレビュー上でカーソルをtitleFragmentの上に置いてください。丸い接続点がフラグメントビューの右側に表示されます。接続点をクリックしてgameFragmentの上にドラッグしてください。これで二つのフラグメントをつなぐアクションが生成されました。
  2. アクションの属性を確認するために、二つのフラグメントを繋いでいる線をクリックしてください。アトリビュートパネルのIDがaction_titleFragment_to_gameFragmentになっていることを確認してください。

ステップ2:Playボタンにクリックハンドラーを追加する

タイトルフラグメントはアクションによってゲームフラグメントに接続されました。これからタイトル画面に表示されるPlayボタンを押すとゲーム画面に遷移するように実装していきます。

  1. TitleFragment.ktファイルを開いてください。onCreateView()メソッドの中のreturn文の前に以下のコードを追加してください。
binding.playButton.setOnClickListener{}
  1. setOnClickListenerの中に、bindingクラスを通してPlayボタンにアクセスし、ゲームフラグメントに遷移させるコードを追加します。
//The complete onClickListener with Navigation
binding.playButton.setOnClickListener { view : View ->
       view?.findNavController().navigate(R.id.action_titleFragment_to_gameFragment)
}
  1. アプリをビルドして必要なインポート文が全て含まれていることを確認してください。例として、以下のインポート文などが必要になります。
import androidx.navigation.findNavController
  1. アプリを起動してPlayボタンを押してみてください。ゲーム画面に遷移します。

コメント

プロフィール

プロフィール
コードラボJP

大学卒業後SEに就職、現在は退職しフリーランスとして活動中。
『初心者でも挫折せずに一人でプログラミングを学べる』をモットーに、コードラボJPを開設
お問い合わせ等はcodelabsjp@gmail.comまで

コードラボJPをフォローする
タイトルとURLをコピーしました