Android Kotlin基礎講座 05.1: ViewModelとViewModelProvider
目次
タスク:END GAMEボタンのクリックリスナーを実装する
このタスクでは、END GAMEボタンのクリックリスナーを実装していきます。
- GameFragmentの中にonEndGame()というメソッドを追加してください。onEndGame()メソッドはユーザーがEND GAMEボタンをタップすると呼び出されます。
private fun onEndGame() {
}
- GameFragmentのonCreateView()メソッドの中で、Got itボタンとSkipボタン用のクリックリスナーをセットしているコード部分を見てください。これらのコードのすぐ下にEND GAMEボタン用のクリックリスナーをセットしてください。バインディング変数bindingを使います。クリックリスナーの中でonEndGame()メソッドを呼び出してください。
binding.endGameButton.setOnClickListener { onEndGame() }
- GameFragmentの中に、gameFinished()というアプリを得点画面に遷移させるためのメソッドを追加してください。Safe Argsを利用して得点を引数として渡します。
/**
* Called when the game is finished
*/
private fun gameFinished() {
Toast.makeText(activity, "Game has just finished", Toast.LENGTH_SHORT).show()
val action = GameFragmentDirections.actionGameToScore()
action.score = viewModel.score
NavHostFragment.findNavController(this).navigate(action)
}
- onEndGame()メソッドの中でgameFinished()メソッドを呼び出してください。
private fun onEndGame() {
gameFinished()
}
- アプリを起動してゲームをプレイしてください。いくつか単語を表示させたあとにEND GAMEボタンをタップしてください。アプリが得点画面に遷移することを確認してください。しかし最終的な得点は表示されていません。次のタスクでこれを解消していきます。