我正在使用conductor
,我想在其中初始化GoogleApiClient
。
正如在conductor
doc中所说,指挥是为了替换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
。
答案 0 :(得分:0)
我找到了这个问题的解决方案: 这很简单。 view.context已经是MyActivity,我只需要转换它:
GoogleApiClient.Builder(view.context).enableAutoManage(view.context as MyActivity, this)
您也可以通过致电activity
getActivity()
来获取家长controller