in app/src/main/java/com/example/android/uamp/MainActivity.kt [41:88]
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Initialize the Cast context. This is required so that the media route button can be
// created in the AppBar
castContext = CastContext.getSharedInstance(this)
setContentView(R.layout.activity_main)
// Since UAMP is a music player, the volume controls should adjust the music volume while
// in the app.
volumeControlStream = AudioManager.STREAM_MUSIC
/**
* Observe [MainActivityViewModel.navigateToFragment] for [Event]s that request a
* fragment swap.
*/
viewModel.navigateToFragment.observe(this, Observer {
it?.getContentIfNotHandled()?.let { fragmentRequest ->
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(
R.id.fragmentContainer, fragmentRequest.fragment, fragmentRequest.tag
)
if (fragmentRequest.backStack) transaction.addToBackStack(null)
transaction.commit()
}
})
/**
* Observe changes to the [MainActivityViewModel.rootMediaId]. When the app starts,
* and the UI connects to [MusicService], this will be updated and the app will show
* the initial list of media items.
*/
viewModel.rootMediaId.observe(this,
Observer<String> { rootMediaId ->
rootMediaId?.let { navigateToMediaItem(it) }
})
/**
* Observe [MainActivityViewModel.navigateToMediaItem] for [Event]s indicating
* the user has requested to browse to a different [MediaItemData].
*/
viewModel.navigateToMediaItem.observe(this, Observer {
it?.getContentIfNotHandled()?.let { mediaId ->
navigateToMediaItem(mediaId)
}
})
}