zcash-android-wallet-zcon1/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/BaseFragment.kt

47 lines
1.3 KiB
Kotlin

package cash.z.android.wallet.ui.fragment
import android.content.Context
import android.os.Bundle
import androidx.fragment.app.Fragment
import dagger.android.AndroidInjector
import dagger.android.DispatchingAndroidInjector
import dagger.android.support.AndroidSupportInjection
import dagger.android.support.HasSupportFragmentInjector
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
abstract class BaseFragment : Fragment(), HasSupportFragmentInjector, CoroutineScope {
private lateinit var job: Job
@Inject
internal lateinit var childFragmentInjector: DispatchingAndroidInjector<Fragment>
val scope: CoroutineScope
get() = CoroutineScope(coroutineContext)
override val coroutineContext: CoroutineContext
get() = job + Dispatchers.Main
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
job = Job()
}
override fun onAttach(context: Context) {
AndroidSupportInjection.inject(this)
super.onAttach(context)
}
override fun onDestroy() {
super.onDestroy()
job.cancel()
}
override fun supportFragmentInjector(): AndroidInjector<Fragment>? {
return childFragmentInjector
}
}