Вот упрощенная версия моего кода действия:
Код: Выделить всё
@AndroidEntryPoint
public class LauncherActivity extends com.google.androidbrowserhelper.trusted.LauncherActivity {
@Inject
AdIdUtil adIdUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adIdUtil.sendAdId(); // Using the injected dependency
}
}
Код: Выделить всё
[Hilt] Activities annotated with @AndroidEntryPoint must be a subclass of androidx.activity.ComponentActivity. (e.g. FragmentActivity, AppCompatActivity, etc.)
Что я' Я пробовал
1. Действие-оболочка. Я создал действие-оболочку, расширяющее AppCompatActivity, и использовал его для обработки внедрения зависимостей с помощью Hilt, а затем запустил LauncherActivity из обертка. Это работает, но не идеально, так как я бы предпочел по возможности избегать дополнительных действий.
2. Ручное внедрение с помощью EntryPoints: я попытался использовать API EntryPointAccessors компании Hilt для ручного внедрения зависимостей, которые работает, но кажется громоздким для прямого внедрения.
3. Подход ViewModel: я создал ViewModel для хранения зависимости (AdIdUtil) и внедрил ее. есть, но поскольку com.google.androidbrowserhelper.trusted.LauncherActivity не реализует ViewModelStoreOwner, я столкнулся с проблемами при попытке получить ViewModel.
Вопрос
Есть ли альтернативный подход к использованию Hilt для внедрения зависимостей в com.google.androidbrowserhelper.trusted.LauncherActivity без необходимости активности оболочки? Или есть ли рекомендуемый способ обработки внедрения зависимостей для классов, которые не расширяют ComponentActivity?
Будем признательны за любые рекомендации по этому поводу!
Подробнее здесь: https://stackoverflow.com/questions/791 ... eractivity
Мобильная версия