android.view.ContextThemeWrapper нельзя привести к android.app.Activity - PullRequest
0 голосов
/ 11 марта 2019

У меня есть сценарий, в котором я должен добавить класс в мой обзор переработчика.Чтобы внедрить мой класс кинжала, мне нужно овладеть контекстом. Поэтому я написал следующий код в своем классе переработчика

 Components.<DepComponent>getFrom(parent.getContext()).inject(this);

Внутри DepComponent У меня есть метод инъекции, в котором это конкретное представление переработчикатакже добавлено

Когда я запускаю код, я получаю эту ошибку

android.view.ContextThemeWrapper cannot be cast to target.dagger.HasComponent

Я пытался привести (Activity)parent.getContext(), но выдается следующая ошибка

android.view.ContextThemeWrapper cannot be cast to Activity

Есть предложения, как решить эту проблему?Похоже, parent.getContext () возвращает ContextThemeWrapper, который не приводится к действию

1 Ответ

1 голос
/ 11 марта 2019

Вы можете использовать следующий метод, чтобы получить действие из контекста или броска и исключения, если оно не основано на действии:

private fun getActivity(context: Context): Activity {
    return when (context) {
        is Activity -> context
        is ContextWrapper -> getActivity(context.getBaseContext())
        else -> error("Non Activity based context")
    }
}

Примерно так:

Components.<DepComponent>getFrom(getActivity(context)).inject(this);

...