IviPopOverFragment
The abstract class for fragments intended to be the content of a pop over. It has built-in mechanism to reinitialize itself with its dependencies after being recreated following a configuration change.
All dependencies which shall be retained across configuration change are stored in IviPopOverContext (or its derivations) and accessible as popOverContext after onAttach has been called on this fragment. IviPopOverContext contains basic dependencies to get IVI related information and access to its services and configuration.
If a concrete class has other dependencies than the ones available in IviPopOverContext, then define a subclass of IviPopOverContext to hold the additional dependencies.
Example of a concrete class without additional dependencies:
class ExampleViewModel(iviPopOverContext: IviPopOverContext) :
IviPopOverViewModel<IviPopOverContext>(iviPopOverContext) {
// ...
}
class ExampleFragment : IviPopOverFragment<IviPopOverContext, ExampleViewModel>(
ExampleViewModel::class
) {
// ...
}
// Usage:
val examplePopOverFragment = IviPopOverFragment.Initializer(
ExampleFragment(),
IviPopOverContext(frontendContext)
).popOverFragment
Example of a concrete class with additional dependency "extra
":
class ExampleContext(frontendContext: FrontendContext, val extra: String) :
IviPopOverContext(frontendContext)
class ExampleViewModel(exampleContext: ExampleContext) :
IviPopOverViewModel<ExampleContext>(exampleContext) {
// ...
}
class ExampleFragment : IviPopOverFragment<ExampleContext, ExampleViewModel>(
ExampleViewModel::class
) {
override fun onAttach(context: Context) {
super.onAttach(context)
Log.d("ExampleFragment", "extra = ${popOverContext.extra}")
}
}
// Usage:
val examplePopOverFragment = IviPopOverFragment.Initializer(
ExampleFragment(),
ExampleContext(frontendContext, "This is an additional dependency.")
).popOverFragment
Parameters
Types
Helper class to initialize the given popOverFragment with IviPopOverContext or its derivation.