iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Mobile Development

Andoroid - Kotlin筆記 (新)系列 第 9

[Day9] Android : Kotlin筆記:JetPack - Fragment KTX

  • 分享至 

  • xImage
  •  

Fragment KTX

首先要在app的build.gradle加入:

dependencies {
    implementation("androidx.fragment:fragment-ktx:1.3.6")
}

viewModels

@MainThread inline fun <reified VM : ViewModel> Fragment.viewModels(
    noinline ownerProducer: () -> ViewModelStoreOwner = { this }, 
    noinline factoryProducer: () -> ViewModelProvider.Factory = null
): Lazy<VM>

這個套件可以使我們直接透過
by activityViewModels()by viewModels()
取用ViewModel

by activityViewModels():取得fragment所在的activityviewModel

class MyFragment : Fragment() {
    val viewmodel: MyViewModel by activityViewModels()
    //或者這樣寫 
    //val viewmodel: MyViewModel by activityViewModels()
}

by viewModels():取得fragmentviewModel

class MyFragment : Fragment() {
    val viewmodel: MyViewModel by viewModels()
}

fragment間的頁面切換也可以從以往的:

supportFragmentManager.beginTransaction()
            .addToBackStack("...")
            .setCustomAnimations( R.anim.enter_anim, R.anim.exit_anim)
            .replace(
                R.id.fragment_container,
                myFragment,
                FRAGMENT_TAG
            )
            .commit()

改寫為:

supportFragmentManager.commit {
            addToBackStack("...")
            setCustomAnimations( R.anim.enter_anim, R.anim.exit_anim)
            replace(
                R.id.fragment_container,
                myFragment,
                FRAGMENT_TAG
            )
        }     

在這邊只簡單列出幾個常用的方法,
如果有興趣研究更多可以看看官網喔。


上一篇
[Day8] Android - Kotlin筆記:JetPack - Core KTX
下一篇
[Day10] Android - Kotlin筆記:JetPack - LiveData & Lifecycle KTX
系列文
Andoroid - Kotlin筆記 (新)18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言