Получить активность от контроллера проводника
Я использую conductor
и я хочу инициализировать GoogleApiClient
в этом. Как сказано в conductor
док, проводник сделан для замены Fragment
, В Fragment
Я могу легко получить activity
, Есть ли способ сделать это в conductor
?
class SignInController : Controller(), GoogleApiClient.OnConnectionFailedListener {
private lateinit var mGoogleApiClient: GoogleApiClient
private lateinit var mFirebaseAuth: FirebaseAuth
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup): View {
val view = inflater.inflate(R.layout.controller_sign_in, container, false)
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(view.context.getString(R.string.default_web_client_id))
.requestEmail()
.build()
mGoogleApiClient = GoogleApiClient.Builder(view.context)
.enableAutoManage(view.context /* I need an activity here */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build()
mFirebaseAuth = FirebaseAuth.getInstance()
return view
}
}
Я пытался использовать view.context
вместо activity
но это не работает Требуется только FragmentActivty
, Как инициализировать GoogleApiClient
внутри проводника или передать его туда? Я не хотел бы использовать DI
Вот.
1 ответ
Решение
Я нашел решение этой проблемы: это очень просто. View.context уже является MyActivity, и мне просто нужно привести его:
GoogleApiClient.Builder(view.context).enableAutoManage(view.context as MyActivity, this)
Вы также можете получить родителя activity
просто позвонив getActivity()
в вашем controller