Получить активность от контроллера проводника

Я использую 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

Другие вопросы по тегам