以下のコードの解説を小学生でも理解できるくらい丁寧に解説して頂けますか?
ちなみに、このコードは以下の記事を参考にコードを書きました。
KotlinでBottomNavigationViewを使用してFragmentを切り替え
https://qiita.com/iKimishima/items/d44bb9cc2a1d04548fdd
class MainActivity : AppCompatActivity() {
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.navigation_home -> {
supportFragmentManager.beginTransaction()
.replace(R.id.frameLayout, HomeFragment())
.commit()
return@OnNavigationItemSelectedListener true
}
R.id.navigation_dashboard -> {
supportFragmentManager.beginTransaction()
.replace(R.id.frameLayout, DashboardFragment())
.commit()
return@OnNavigationItemSelectedListener true
}
R.id.navigation_notifications -> {
supportFragmentManager.beginTransaction()
.replace(R.id.frameLayout, NotificationsFragment())
.commit()
return@OnNavigationItemSelectedListener true
}
}
false
}
ーーーーーーーーーーーーーーーーーーーーーー
このコードは、Kotlinというプログラミング言語で書かれたものです。
Kotlinは、Androidというスマートフォンのシステムで使われる言語の一つです。
このコードは、画面の下にあるメニューをタップすると、画面の上の部分が切り替わるようにするものです。
例えば、ホームというメニューをタップすると、ホームという画面になります。
ダッシュボードというメニューをタップすると、ダッシュボードという画面になります。
通知というメニューをタップすると、通知という画面になります。
このように、メニューと画面の対応関係を決めるのがこのコードの役割です。
このコードの中身を見てみましょう。
まず、class MainActivityというところは、このコードがMainActivityという名前のクラスであることを宣言しています。
クラスとは、プログラムの中で使われるもののひとまとまりのことです。クラスには、変数や関数というものが入っています。
変数とは、値を入れておく箱のようなものです。
関数とは、何かの処理をするための命令の集まりです。
MainActivityというクラスは、AppCompatActivityというクラスを継承しています。
継承とは、親クラスの変数や関数を子クラスが受け継ぐことです。
AppCompatActivityというクラスは、Androidで画面を作るときに使われる基本的なクラスです。
次に、private val mOnNavigationItemSelectedListenerというところは、mOnNavigationItemSelectedListenerという名前の変数を宣言しています。
privateというのは、この変数がMainActivityクラスの中でしか使えないことを意味します。
valというのは、この変数が変更できないことを意味します。
mOnNavigationItemSelectedListenerという変数は、BottomNavigationView.OnNavigationItemSelectedListenerという型を持っています。
型とは、変数に入る値の種類のことです。
BottomNavigationView.OnNavigationItemSelectedListenerという型は、BottomNavigationViewというメニューの項目がタップされたときに呼び出される関数を持っています。
この関数は、itemという名前の引数を受け取ります。引数とは、関数に渡される値のことです。
itemという引数は、タップされたメニューの項目の情報を持っています。
この関数の中身を見てみましょう。
whenというのは、条件分岐をするための命令です。条件分岐とは、ある条件によって処理を変えることです。
whenの中には、item.itemIdというのがあります。これは、タップされたメニューの項目のIDという識別番号を表しています。
whenの下には、IDによって分けられたいくつかのケースがあります。それぞれのケースには、そのIDに対応する処理が書かれています。
例えば、R.id.navigation_homeというケースでは、ホームというメニューの項目がタップされたときの処理が書かれています。
この処理では、supportFragmentManagerというものを使っています。
supportFragmentManagerとは、先ほど説明した「supportfragmetmanager」のことです。
supportFragmentManager.beginTransaction()というのは、「supportfragmetmanager」に対して、フラグメントの操作を始めるという命令です。
.replace(R.id.frameLayout, HomeFragment())というのは、「supportfragmetmanager」に対して、frameLayoutという名前の場所にあるフラグメントを、HomeFragmentという名前のフラグメントに入れ替えるという命令です。
.commit()というのは、「supportfragmetmanager」に対して、フラグメントの操作を終了するという命令です。
return@OnNavigationItemSelectedListener trueというのは、この関数がtrueという値を返すという命令です。
trueという値は、正しいという意味です。この関数がtrueを返すということは、メニューの項目がタップされたときの処理が正しく行われたということです。
他のケースも同様に、メニューの項目に対応するフラグメントを入れ替える処理を行っています。
最後に、falseというのがあります。これは、どのケースにも当てはまらなかったときに返す値です。falseという値は、間違いという意味です。
この関数がfalseを返すということは、メニューの項目がタップされたときの処理が間違っていたということです。
このように、このコードは、メニューの項目がタップされたときに、画面の上の部分が切り替わるようにするものです。
このコードを使うと、ユーザーは、メニューをタップするだけで、画面を簡単に切り替えることができます。
このコードは、KotlinでBottomNavigationViewを使用してFragmentを切り替えという記事を参考にして書かれたものです。
この記事は、このコードの詳細な説明や、実際に動くアプリの例を紹介しています。もっと詳しく知りたい方は、この記事を読んでみてください。
ーーーーーーーーーーーーーーーーーーーーー
【感想】
コードを見て全体的にに“なんとなくは“理解できているものの、
部分的には理解が怪しい部分(AppCompatActivity/supportfragmetmanager/item/itemId/.commit()をクリアにすることができたので「Bing」って凄いなと思いました。